Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 16.09.2017
Сообщений: 5

EntityFramework SQLite не создаёт таблицы

28.11.2018, 02:11. Показов 6933. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть некоторая несложная модель:
C#
1
2
3
4
5
6
7
8
9
public class ItemAnnouncement
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public Price Price { get; set; } // комплексный тип
    public List<string> ImagePaths { get; set; }
    public List<string> StyleNames { get; set; }
    public List<string> SizeNames { get; set; }
}
Дальше имеем не намного более сложный контекст:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    public class ItemAnnouncementContext : DbContext
    {
        public DbSet<ItemAnnouncement> ItemAnnouncements { get; set; }
 
        public ItemAnnouncementContext(DbContextOptions<ItemAnnouncementContext> options)
            : base(options)
        {
            Database.Migrate();
        }
 
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<ItemAnnouncement>()
                .OwnsOne(a => a.Price);
 
            modelBuilder.Entity<ItemAnnouncement>()
                .Property(a => a.ImagePaths)
                .HasConversion(new ObjectToJsonConverter<List<string>>());
            modelBuilder.Entity<ItemAnnouncement>()
                .Property(a => a.StyleNames)
                .HasConversion(new ObjectToJsonConverter<List<string>>());
            modelBuilder.Entity<ItemAnnouncement>()
                .Property(a => a.SizeNames)
                .HasConversion(new ObjectToJsonConverter<List<string>>());
        }
    }
(ObjectToJsonConvert - просто конвертер в джейсон (для списков, как не трудно догадаться))


Добавим немножечко кода использования этого дела:
C#
1
2
3
var anncItems = await GetAnnouncementItemsAsync(); // возвращает List<ItemAnnouncement>
_announcementContext.ItemAnnouncements.AddRange(anncItems);
_announcementContext.SaveChanges();
И напоследок присыпим всё это настройкой соединения SQLite-а:
C#
1
2
services.AddEntityFrameworkSqlite();
services.AddDbContext<ItemAnnouncementContext>(option => option.UseSqlite("Data source=some-db.sqlite"));

И получаем вкуснейший деликатес - неделя мучений в попытках понять причину следующего экзепшена:
fail: Microsoft.EntityFrameworkCore.Database.C ommand[20102]
Failed executing DbCommand (4ms) [Parameters=[@p0='?', @p1='?' (Size = 397), @p2='?' (Size = 39), @p3='?' (Size = 2), @p4='?' (Size = 9), @p5='?', @p6='?', @p7='?', @p8='?'], CommandType='Text', CommandTimeout='30']
INSERT INTO "ItemAnnouncements" ("Id", "ImagePaths", "Name", "SizeNames", "StyleNames", "Price_Dollar", "Price_Euro", "Price_Pound", "Price_Yen")
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8);
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: ItemAnnouncements'.
at Microsoft.Data.Sqlite.SqliteException.Th rowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.Prep areAndEnumerateStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.Exec uteReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteRead er()
at Microsoft.EntityFrameworkCore.Storage.In ternal.RelationalCommand.Execute(IRelati onalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
fail: Microsoft.EntityFrameworkCore.Update[10000]
An exception occurred in the database while saving changes for context type 'Supreme******dor.Models.Items.ItemAnnou ncementContext'.
Microsoft.EntityFrameworkCore.DbUpdateEx ception: An error occurred while updating the entries. See the inner exception for details. ---> Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: ItemAnnouncements'.
at Microsoft.Data.Sqlite.SqliteException.Th rowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.Prep areAndEnumerateStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.Exec uteReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteRead er()
at Microsoft.EntityFrameworkCore.Storage.In ternal.RelationalCommand.Execute(IRelati onalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Storage.In ternal.RelationalCommand.ExecuteReader(I RelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Update.Rea derModificationCommandBatch.Execute(IRel ationalConnection connection)
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Update.Rea derModificationCommandBatch.Execute(IRel ationalConnection connection)
at Microsoft.EntityFrameworkCore.Update.Int ernal.BatchExecutor.Execute(DbContext _, ValueTuple`2 parameters)
at Microsoft.EntityFrameworkCore.Update.Int ernal.BatchExecutor.Execute(IEnumerable` 1 commandBatches, IRelationalConnection connection)
at Microsoft.EntityFrameworkCore.Storage.Re lationalDatabase.SaveChanges(IReadOnlyLi st`1 entries)
at Microsoft.EntityFrameworkCore.ChangeTrac king.Internal.StateManager.SaveChanges(I ReadOnlyList`1 entriesToSave)
at Microsoft.EntityFrameworkCore.ChangeTrac king.Internal.StateManager.SaveChanges(B oolean acceptAllChangesOnSuccess)
at Microsoft.EntityFrameworkCore.DbContext. SaveChanges(Boolean acceptAllChangesOnSuccess)
Microsoft.EntityFrameworkCore.DbUpdateEx ception: An error occurred while updating the entries. See the inner exception for details. ---> Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: ItemAnnouncements'.
at Microsoft.Data.Sqlite.SqliteException.Th rowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.Prep areAndEnumerateStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.Exec uteReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteRead er()
at Microsoft.EntityFrameworkCore.Storage.In ternal.RelationalCommand.Execute(IRelati onalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Storage.In ternal.RelationalCommand.ExecuteReader(I RelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Update.Rea derModificationCommandBatch.Execute(IRel ationalConnection connection)
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Update.Rea derModificationCommandBatch.Execute(IRel ationalConnection connection)
at Microsoft.EntityFrameworkCore.Update.Int ernal.BatchExecutor.Execute(DbContext _, ValueTuple`2 parameters)
at Microsoft.EntityFrameworkCore.Update.Int ernal.BatchExecutor.Execute(IEnumerable` 1 commandBatches, IRelationalConnection connection)
at Microsoft.EntityFrameworkCore.Storage.Re lationalDatabase.SaveChanges(IReadOnlyLi st`1 entries)
at Microsoft.EntityFrameworkCore.ChangeTrac king.Internal.StateManager.SaveChanges(I ReadOnlyList`1 entriesToSave)
at Microsoft.EntityFrameworkCore.ChangeTrac king.Internal.StateManager.SaveChanges(B oolean acceptAllChangesOnSuccess)
at Microsoft.EntityFrameworkCore.DbContext. SaveChanges(Boolean acceptAllChangesOnSuccess)
После употребления этого блюда вам может некоторое время видится слова "No such table" - эффект побочный, но оно того стоит.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2018, 02:11
Ответы с готовыми решениями:

Вложенные таблицы в EntityFramework CodeFirst
Прошу помочь мне с таким не сложным вопросом. Для начала начну с того как организована у меня работа с базой. Достаточно просто и по...

SQLite Entity Framework 6. Не находит провайдер. Не создаёт таблицу, если даже создаёт БД
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;configuration&gt; &lt;configSections&gt; &lt;!-- For more information on Entity Framework...

EntityFramework в бд не создались таблицы
Описание проблемы. Создал проект. В папку Моделс добавил классы с логикой для каждой таблицы (поля для каждой таблицы) , так же добавил...

3
.NET C#,ASP.NET MVC
Эксперт .NET
 Аватар для lvlkoo
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
28.11.2018, 13:12
Создайте миграции в ручную.
В PMC (Package Manager Console) создать миграцию командой
Code
1
add-migration
Затем приминить измнения в бд
Code
1
update-database
0
0 / 0 / 0
Регистрация: 16.09.2017
Сообщений: 5
28.11.2018, 20:57  [ТС]
У меня в проекте используется несколько контекстов
0
.NET C#,ASP.NET MVC
Эксперт .NET
 Аватар для lvlkoo
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
28.11.2018, 22:47
Цитата Сообщение от Prunkles Посмотреть сообщение
У меня в проекте используется несколько контекстов
параметром

Code
1
--context MyContextName
можно указать к какому контексту создаеться миграция
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2018, 22:47
Помогаю со студенческими работами здесь

Заполнение таблицы с отношением многие ко многим (EntityFramework)
Всем привет мне нужно к таблице SemesterLessonsPower передать несколько подгруп StudentSubGroup public class SemesterLessonsPower ...

Как сформировать ItemsSource для подчиненной таблицы в EntityFramework many-to-many
Уважаемые Гуру! Есть две таблицы - 1. Организации 2.Средства, которые имеются в организации Связь many-to-many. Во вьюхе формирую...

Обновление таблицы в SQLite
Всем доброго времени суток, такая проблемма: подключил базу данных SQLite, на форме расположена кнопка и DataGridView, считываю в неё...

Две таблицы SQLite
Все доброй поры суток. Хотелось бы поинтересоваться - можно ли в Lazarus работать одновременно с двумя таблицами с одной базы данных? ...

Создание таблицы в БД (SQLite)
Привет всем. Почему не получается содать таблицу в бд? скопировал пример который был QSqlDatabase db =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru