Entity Framework 6.1.3 кодирует первую базу данных, совместимую с плавными сопоставлениями, на моно

У меня есть система Asp.Net webapi 2, которая работает с сервером sql. Я разработал его с использованием первых моделей данных кода Entity Fraework 6.1.3 и плавных сопоставлений с типичным рабочим процессом добавления-миграции/обновления-базы данных. Я люблю это.

Мне нужно создать точно такое же программное обеспечение с более легкой базой данных для работы на устройстве Raspberry Pi. Это отключенная версия программного обеспечения, которая будет воспроизводить/повторно синхронизировать все свои данные с облачной версией (сервером sql).

Я понимаю, что мне, возможно, придется ослабить некоторые из моих ограничений, но, начиная с крайности, я хотел бы настроить точно такую ​​же базу кода с помощью чего-то вроде sqlite и xcopy, развернуть его на моем Raspberry Pi и запустить на моно под веб-сервером kestrel.

В идеале я просто хотел бы изменить строку подключения, чтобы она указывала на пустую базу данных sqlite, выполнить обновление базы данных и запустить точно такое же программное обеспечение в моем окне разработки Windows (а затем скопировать его).

Я много читал о поддержке инфраструктуры объектов sqlite, но а) похоже, что он не поддерживает миграцию б) он, похоже, не поддерживает свободное сопоставление

Я мог бы использовать инструмент для преобразования базы данных моего sql-сервера в sqlite (каждый раз, когда я меняю схему) и, таким образом, избежать необходимости обновлять базу данных. Но отсутствие плавных отображений по-прежнему будет препятствовать правильному сопоставлению модели данных с существующей схемой sqlite.

Есть ли у кого-нибудь мысли/рекомендации по sqlite, которые помогут мне достичь моих целей?

Есть ли у вас какие-либо другие рекомендации по базам данных, которые помогли бы мне достичь моих целей - например, я посмотрел на Vistadb, но я не думаю, что они также поддерживают Fluent.

Драйвер devart sqlite, кажется, поддерживает все, что мне нужно, но все их примеры — это старая школа, и, насколько мне известно, у них нет ни одного примера, который является современной моделью первого кода с плавными сопоставлениями. И даже если бы они сначала полностью поддерживали код с помощью Fluent, я обеспокоен тем, что будут некоторые различия в синтаксисе, и я не уверен, что мой существующий код таргетинга на сервер sql будет совместим с ним. Я задал вопрос на их форумах и отправил электронное письмо, но пока не получил ответа.

Спасибо


person t316    schedule 10.08.2015    source источник
comment
Вы смотрели на EF 7? (в настоящее время в бета-версии)   -  person ErikEJ    schedule 10.08.2015
comment
Думаю, работа для провайдера SQLite на ef 7 отложена. Так что, я не думаю, что я могу использовать его еще ...   -  person t316    schedule 10.08.2015
comment
Поставщик EF7 SQLite доступен в бета-версии 6.   -  person ErikEJ    schedule 11.08.2015
comment
Знаете ли вы, могу ли я использовать ef7 с .net 4.6 и всем моим существующим кодом webapi, или мне нужно перейти на ядро ​​.net? И легко ли перейти с ef 6 на ef 7? Спасибо   -  person t316    schedule 11.08.2015


Ответы (1)


Вы можете рассмотреть возможность использования EF7, новой версии Entity Framework, совместимой с API, которая полностью поддерживает миграцию и свободное сопоставление с SQLite. EF7 работает на .NET 4.6 и .NET Core. В зависимости от того, какие функции EF6 вы используете, обновление может быть простым, особенно если вы уже используете Code First.

http://ef.readthedocs.org/en/latest/getting-started/linux.html

person ErikEJ    schedule 11.08.2015
comment
На самом деле я заставил драйверы devart sqlite работать с Asp.Net 5, вручную настроив генератор миграции sql на их реализацию в конструкторе конфигурации. Тем не менее, я думаю, что в их реализации по-прежнему отсутствует генерация sql-изменения/удаления для pks и fks. Он прекрасно справляется с ванильными моделями, но когда вы пытаетесь изменить имя столбца с индексом или ограничением, возникает ошибка. - person t316; 13.08.2015
comment
Если это проблема для вас, вам не следует использовать SQLite, так как он не поддерживает какие-либо изменения схемы с помощью ALTER или DRROP. - person ErikEJ; 13.08.2015
comment
Это не проблема, если я не могу найти способ синхронизировать изменения моей модели с sqlite после их применения к серверу sql. Поскольку изменения модели могут привести к удалению столбцов и изменению отношений по мере того, как вы обнаруживаете новые нюансы, я обеспокоен тем, что застряну и не смогу поддерживать первые миграции кода для sqlite. Возможно, на каждой итерации я могу использовать инструмент для преобразования базы данных sql-сервера в sqlite и вручную добавлять таблицу последовательностей. Это должно дать механизму миграции то, что он хочет, не так ли? - person t316; 13.08.2015
comment
Интересно, могу ли я иметь две конфигурации, идущие к двум разным каталогам MigrationDirectory для одного и того же DbContext, а в версии sqlite я всегда сначала обновляю до TargetMigration: 0, а затем удаляю файлы cs предыдущей миграции и добавляю одну единственную миграцию, которая идет вперед к текущее состояние модели данных. Это, естественно, создаст все с нуля одним махом и не будет иметь изменений или падений. SQL-версия миграции будет содержать истинную историю изменений, потому что ее генерация sql миграции более полная... Я попробую это сегодня вечером - что вы думаете? - person t316; 13.08.2015
comment
Имейте в виду, что этот проект никоим образом не завершен! Например. Количество элементов «многие ко многим» не поддерживается, а также изменение графика даже агрегации. Однако миграции работают! - person Samjongenelen; 29.09.2015