EF模型从SSCE 4.0切换到SQL Server 2008 R2

本文关键字:SQL Server 2008 R2 模型 SSCE EF | 更新日期: 2023-09-27 18:17:13

这是一个新项目,它将在桌面上启动,并可选择在SQL Server 2008 R2或SQL Server 2012上扩展到多个用户

我正在寻找一些现实世界的经验,技巧,陷阱等。

UPDATE -理想情况下更倾向于在运行时通过配置项进行切换。

UPDATE 2 -这里是否有可以使用的模式?

UPDATE 3 - SQL SERVER 2008数据库模式已经在prod中使用,所以不能先从ssce模型代码开始,然后从那里开始

EF模型从SSCE 4.0切换到SQL Server 2008 R2

实际上EF模型对于SSCE 4.0和SQL Server是不同的,所以你需要做一些"facade"。另一个不错的选择是EF Code First,您只需要更改连接字符串。

理论

EDMX

对于EDMX,您至少需要两个SSDL文件。一个用于SQL server,一个用于SQL server CE。原因是wsdl文件描述了数据库,包括数据库类型。SQL Server CE中的某些类型是不同的。例如,SQL server CE不支持NVARCHAR(max),而必须使用NTEXT。SSDL还包含有关提供程序清单的信息,因此即使您的列类型和名称完全相同,您仍然需要使用SSDL来区分提供程序清单。

如果两个数据库中的表和名称相同,则可以使用相同的MSL (CSDL必须相同)。使用两个SSDL要困难得多,因为它要么意味着两个EDMX和一些手动同步更改,要么意味着一个EDMX和一些将提取第二个SSDL的脚本,或者在XML文件中手动维护整个映射。实体框架VS设计器还没有为这种用法做好准备。

优先

Code首先提供了更简单的情况,因为您不必处理SSDL。基于连接字符串中定义的提供者和模型中定义的映射,在应用程序启动时自动创建SSDL。

当涉及到SQL Server和SQL Server CE中不同的数据类型时,即使代码首先也会出现问题。作为一个例子,我们可以再次使用大字符串。

实践

理论认为这是可能的。该公司表示,这可能更具挑战性。SQL Server和SQL Server CE是不同的数据库服务器,具有不同的特性和性能。SQL Server提供了更多的功能,其中一些功能在SQL Server CE(视图,SQL过程)上根本不起作用(你提到你已经有SQL Server的模式),或者会慢得多。一旦你满足了这个限制,你要么必须分支你的开发来单独支持SQL Server和SQL Server CE,要么你将不得不做出妥协。

您可以先使用代码在SqlExpress中生成表。然后在服务器资源管理器中,您可以访问sqlexpress mdf。右击并单击Publish to Provider。使用脚本文件选项。表和所有这些都可以导出为sql脚本。然后,sql脚本可以在sql Server 2008上运行,在sql Server数据库中创建表。