Entity Framework и база данных Dynamics NAV - PullRequest
0 голосов
/ 09 декабря 2011

В настоящее время я работаю над проектом приложения для интрасети с использованием ASP.NET MVC 3. Одним из основных требований является то, что все данные, созданные с помощью приложения, также должны быть доступны в программном обеспечении ERP клиента;они работают с MS Dynamics NAV.Доступ к данным на самом деле не является проблемой, поскольку NAV использует SQL-Server в качестве своей базы данных.

На самом деле у меня уже есть работающий прототип, который использует Entity Framework для доступа к данным.Основная проблема здесь заключается в том, что моя компания также разрабатывает довольно много пользовательских функций в рамках ERP, и, следовательно, некоторые таблицы базы данных, из которых мне приходится читать и писать, часто меняются.Это не будет проблемой в обычной ситуации, но здесь каждое поле в базе данных помечено как not null, что очень раздражает в Dynamics NAV.Это означает, что каждое поле, добавленное в таблицу, нарушает мой код, поскольку Entity Framework пытается вставить нулевое значение, когда оно не знает о поле.

Может кто-нибудь из вас подумает о решении, которое не требует регенерациимодель после каждого изменения в таблицах?

Редактировать: К сожалению, наш клиент все еще использует версию 4.0 Nav, поэтому веб-сервисы не вариант .. Я уже разработал другое приложение для них (частьсистемы управления складом, которая работает на мобильных терминалах), напрямую обращаясь к SQL Server, но не в том же масштабе.

1 Ответ

3 голосов
/ 09 декабря 2011

Если вам требуется интеграция с ERP, например, с Dynamics NAV, вы должны передать весь доступ к данным через его сервер приложений.Я думаю, что Dynamics NAV предоставляет веб-сервисы для связи с сервером приложений.Прямой доступ к его таблицам - это путь к катастрофе, особенно из-за транзакций и возможных тупиков.EF сделает это еще хуже, потому что вы не сможете настраивать запросы.

Интеграция приложений через базу данных требует полного контроля над SQL, генерируемым всеми обращающимися приложениями.

Ответ на ваш главный вопрос - нет.Смысл разработки базы данных в первую очередь заключается в том, чтобы заново генерировать вашу модель после каждой модификации базы данных, особенно если каждая модификация базы данных приводит к критическим изменениям (еще одна причина, по которой интеграция через базу данных не является хорошим выбором для вас).

...