Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 实体框架和动态导航数据库_Sql Server_Asp.net Mvc 3_Entity Framework_Dynamics Nav - Fatal编程技术网

Sql server 实体框架和动态导航数据库

Sql server 实体框架和动态导航数据库,sql-server,asp.net-mvc-3,entity-framework,dynamics-nav,Sql Server,Asp.net Mvc 3,Entity Framework,Dynamics Nav,我目前正在使用ASP.NET MVC 3开发一个Intranet应用程序项目。 主要要求之一是,应用程序创建的所有数据也必须在客户的ERP软件中可用;他们与MS Dynamics NAV合作。访问数据并不是一个真正的问题,因为NAV使用SQL Server作为其数据库 事实上,我已经有了一个工作原型,它使用实体框架进行数据访问。这里的主要问题是,我的公司还在ERP中开发了很多定制功能,因此我必须读取和写入的一些数据库表经常会发生更改。在通常情况下,这并不是一个真正的问题,但在这里,数据库中的每个

我目前正在使用ASP.NET MVC 3开发一个Intranet应用程序项目。 主要要求之一是,应用程序创建的所有数据也必须在客户的ERP软件中可用;他们与MS Dynamics NAV合作。访问数据并不是一个真正的问题,因为NAV使用SQL Server作为其数据库

事实上,我已经有了一个工作原型,它使用实体框架进行数据访问。这里的主要问题是,我的公司还在ERP中开发了很多定制功能,因此我必须读取和写入的一些数据库表经常会发生更改。在通常情况下,这并不是一个真正的问题,但在这里,数据库中的每个字段都被标记为
not null
,这是Dynamics NAV非常恼人的特性。这意味着添加到表中的每个字段都会破坏我的代码,因为实体框架在不知道字段时会尝试插入null

你们中有谁能想出一个解决方案,在表中每次更改后都不需要重新生成模型


编辑:不幸的是,我们的客户仍然使用Nav的4.0版,因此不能选择Web服务。。我已经为他们开发了另一个应用程序(在移动终端上运行的仓库管理系统的一部分),可以直接访问SQL Server,但规模并不完全相同。

如果您的需求是与类似ERP的Dynamics NAV集成,则应通过其应用程序服务器进行所有数据访问。我认为Dynamics NAV公开web服务以与应用服务器通信。直接访问它的表是一种灾难,特别是由于事务和可能的死锁。EF将使情况变得更糟,因为您将无法调整查询

通过数据库集成应用程序需要完全控制所有访问应用程序生成的SQL


对于您的主要问题,答案是否定的。数据库优先开发的重点是在每次数据库修改后重新生成您的模型-尤其是在每次数据库修改都破坏了更改的情况下(通过数据库集成不是一个好选择的另一个原因).

如果您的需求是与类似于ERP的Dynamics NAV集成,则应通过其应用服务器传递所有数据访问。我认为Dynamics NAV公开web服务以与应用服务器通信。直接访问它的表是一种灾难,特别是由于事务和可能的死锁。EF将使情况变得更糟,因为您将无法调整查询

通过数据库集成应用程序需要完全控制所有访问应用程序生成的SQL


您的主要问题的答案是否定的。数据库优先开发的重点是在每次数据库修改后重新生成您的模型-尤其是在每次数据库修改都破坏了更改的情况下(通过数据库集成对您来说不是一个好选择的另一个原因)。

非常感谢您的回答。我更新了问题,提供了更多细节。我想我们必须使用原始SQL。如果客户端有更新版本的Nav,我会使用web服务。我也用旧版本的Navision开发了一些应用程序,但我们仍然通过应用程序服务器访问它。它使用MSMQ进行通信,并自定义特定于应用程序的消息处理程序。这很可能是我的解决办法。再次感谢!非常感谢你的回答。我更新了问题,提供了更多细节。我想我们必须使用原始SQL。如果客户端有更新版本的Nav,我会使用web服务。我也用旧版本的Navision开发了一些应用程序,但我们仍然通过应用程序服务器访问它。它使用MSMQ进行通信,并自定义特定于应用程序的消息处理程序。这很可能是我的解决办法。再次感谢!