Код EF 6 сначала с X# (или C#) не создает базу данныхC#

Место общения программистов C#
Ответить
Anonymous
 Код EF 6 сначала с X# (или C#) не создает базу данных

Сообщение Anonymous »

Я борюсь с EF 6 (для .NET 4.x), сначала кодом и SQLite.
Я использую X# вместо C#, но это влияет только на синтаксис.< /p>
Проблема в том, что база данных SQLite с таблицей не создана, поэтому SaveChanges() выдает исключение «DbUpdateException», поскольку таблица не существует (будет создан файл db3 с 0 байт):

Внутреннее исключение 1:
UpdateException: произошла ошибка при обновлении записей. Подробности смотрите во внутреннем исключении.
Внутреннее исключение 2:
SQLiteException: логическая ошибка SQL

нет такой таблицы: блоги

Выходные данные журнала показали только отсутствие таблицы __MigrationHistory, но это не должно иметь значения.
Вот полный код :

Код: Выделить всё

USING System
USING System.Collections.Generic
USING System.Linq
USING System.Data.Entity

PUBLIC CLASS CustomIntializer INHERIT CreateDatabaseIfNotExists

PROTECTED OVERRIDE METHOD Seed(context AS BloggingContext) AS VOID
VAR Blogs := List{} {;
Blog {} {Name := "Blog 1"},;
Blog {} {Name := "Blog 2"};
}
Blogs:ForEach({b => context:Blogs:Add(b)})
context:SaveChanges()
END METHOD
END CLASS

PUBLIC CLASS Blog
PUBLIC PROPERTY BlogId AS INT AUTO
PUBLIC PROPERTY Name AS STRING AUTO
PUBLIC VIRTUAL PROPERTY Posts AS List AUTO
END CLASS

PUBLIC CLASS Post
PUBLIC PROPERTY PostId AS INT AUTO
PUBLIC PROPERTY Title AS STRING AUTO
PUBLIC PROPERTY Content AS STRING AUTO
PUBLIC PROPERTY BlogId AS INT AUTO
PUBLIC PROPERTY Blog AS Blog AUTO
END CLASS

PUBLIC CLASS BloggingContext INHERIT DbContext
PUBLIC PROPERTY Blogs AS DbSet AUTO
PUBLIC PROPERTY Posts AS DbSet AUTO

CONSTRUCTOR()
SUPER("DataContext")
SELF:Database:Log := Console.WriteLine

END CLASS

FUNCTION Start() AS VOID STRICT
Database.SetInitializer(CustomIntializer{})
BEGIN USING VAR db := BloggingContext{}
db:database:Initialize(force := TRUE)
db:Blogs.Add(Blog{} {Name := "Blog 1"})
db:SaveChanges()
END USING
Console.WriteLine("*** Database updated ***")
Console.ReadLine()
И app.config: Что мне не хватает, или SQLite не работает с EF 6?
>

Подробнее здесь: https://stackoverflow.com/questions/792 ... a-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»