0

Я переписываю старое приложение VB6, которое использовало SQL Server 2005 и Access MDB в VS 2013 C# с EF 6.0 до SQL Server 2008 R2 и SQL Server CE 4.0. Приложение должно работать автономно в случае сетевых ошибок, которых много. Для автономной версии требуется доступ только для чтения. Повторное использование кода было легко в VB6. Я просто изменил соединения.Одна модель или две? - База данных First EF 6.0 на SQL Server (2005/2008) нуждается в автономной поддержке SQL Server CE 4.0

Я выполнил 98% кода, используя базу данных Первая модель EF 6.0 (только что обновлена). Теперь мне нужно добавить поддержку для офлайн. Я думал, что смогу поменять местами соединения, но я не могу этого сделать. Я открыт для изменения используемой модели, но предпочел бы поддерживать подход Database или Model First.

У меня есть внешнее приложение, которое создает & копии всех данных, необходимых с SQL Server для SQL Server CE, и мне не нужно использовать технологию SQL Server в автономном режиме. Я не хочу переписывать весь свой код только для поддержки автономных подключений.

Я готов поддерживать несколько моделей EDMX, один для SQL Server и один для SQL Server CE, но прежде чем я это сделаю, я хотел бы получить некоторые советы &.

Теоретически приложение будет проверять доступ к серверу при запуске и подключиться к автономному, если сервер недоступен (при условии, что автономный SQL Server CE уже сгенерирован и готов).

ответ

0

Я предполагаю, что SSCE означает SQL Server CE. EF поддерживает несколько back-end для той же модели. В этом случае у вас будет один CSDL и два SSDL и два файла MSL. CSDL представляет вашу модель, в то время как SSDL представляет вашу базу данных (и имеет специфику базы данных, например, использует типы баз данных, специфичные для базы данных). MSL просто сообщает EF, как CSDL сопоставляется с SSDL. Однако разработчик не поддерживает этот сценарий, поскольку дизайнер работает только с файлами EDMX и не разделяет артефакты CSDL/MSL/SSDL. Возможно, у вас может быть два файла EDMX, но тогда вам нужно будет убедиться, что CSDL в обоих случаях одинаковый, и вам придется отключать генерацию кода из одного из файлов EDMX, иначе вы получите два набора объектов, которые будут создать конфликт. Несмотря на то, что это может работать, возникает большая проблема - Visual Studio 2013 больше не поддерживает Sql Server CE. Это означает, что провайдера DDEX для Sql Server CE для VS2013 не существует, что делает невозможным создание/обновление моделей EF, использующих Sql Server CE, поскольку разработчик EF полагается на поставщика DDEX (this - это то, что происходит, если вы пытаетесь использовать Sql Server CE с EF Designer на VS2013). Из-за вышеизложенного вы, вероятно, лучше пытаетесь использовать подход CodeFirst. Вам не нужно беспокоиться о CSDL/MSL/SSDL, поскольку они должны быть построены из вашего кода (если вам нужно настроить модель так, как она касается магазина (например, вы хотите сопоставить столбцу определенного типа магазина), вы бы все еще должны иметь if и настраивать модель в зависимости от используемого вами заднего конца, но она должна быть намного более управляемой, чем отдельные SSDL). CodeFirst не зависит от DDEX, поэтому вы можете использовать его в VS2013, просто добавив пакеты NuGet.

+0

Pawel: Позвольте мне добавить, что моя надстройка SQL Server Compact Toolbox позволяет вам создавать EDMX на базе SQLCE в VS 2013, но я также думаю, что Code First имеет больше смысла в этом сценарии – ErikEJ

+0

@ErikEJ уверен, не стесняйтесь редактировать , Но по ошибке http://entityframework.codeplex.com/workitem/1838 вы действительно ничего не сможете сделать с вашей моделью на основе SqlCE в VS2013 – Pawel

+0

Но он сначала использует базу данных ... – ErikEJ