Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
C# 将EF模型从SSCE 4.0切换到SQL Server 2008 R2_C#_.net_Sql Server 2008_Entity Framework_Sql Server Ce - Fatal编程技术网

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

C# 将EF模型从SSCE 4.0切换到SQL Server 2008 R2,c#,.net,sql-server-2008,entity-framework,sql-server-ce,C#,.net,Sql Server 2008,Entity Framework,Sql Server Ce,这适用于一个新项目,该项目将在桌面上启动,并可在SQL Server 2008 R2或SQL Server 2012上扩展到多个用户 我正在寻找一些真实世界的经验,提示,陷阱等 更新-理想情况下,您更愿意在运行时通过配置条目进行切换 更新2-这里是否有可以使用的模式 更新3-SQL SERVER 2008 db架构已在产品中使用,因此不能先从ssce模型代码开始,然后再从那里开始执行实际上,对于ssce 4.0和SQL SERVER,EF模型是不同的,因此您需要进行一些调整。 另一个好的选择是E

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

我正在寻找一些真实世界的经验,提示,陷阱等

更新-理想情况下,您更愿意在运行时通过配置条目进行切换

更新2-这里是否有可以使用的模式


更新3-SQL SERVER 2008 db架构已在产品中使用,因此不能先从ssce模型代码开始,然后再从那里开始执行

实际上,对于ssce 4.0和SQL SERVER,EF模型是不同的,因此您需要进行一些调整。
另一个好的选择是EF Code First,您只需要更改连接字符串。

您可以使用Code First在SqlExpress中生成表。然后在服务器资源管理器中,您可以访问sqlexpress mdf。单击鼠标右键,然后单击“发布到提供程序”。使用“脚本到文件”选项。表和所有表都可以作为sql脚本导出。然后,sql脚本可以针对sql Server 2008运行,以在sql Server数据库中创建表

理论 EDMX

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

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

先编码

代码优先提供了更加简化的情况,因为您不必处理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上进行分支开发以获得单独的支持,或者必须做出妥协。

您需要在运行时切换吗?您对SSCE 4.0的使用案例是什么?我们将SQL2008 R2 Express与SSCE 4.0进行了几次比较,将本地数据库连接到主服务器,SQL Express轻松获胜。问题的关键是,我们已经有了一个模式,并将其转换为一个DB引擎,有很多很多差距,这使得成本远远大于收益。无法安装sqlexpress,因为pc占用空间/req必须保留在minI上。我们会认为只有SSDL/MSL是不同的……不?我很好奇……您是否因为没有读懂您的想法而否决了响应者?如果答案在当时的措辞中是有用的,我不认为没有预见到你未陈述的需求就有理由投反对票。这就是我想知道的。最初的标题与从CE迁移到R2有关,这就是我理解的问题。