从SQL Server CE切换到SQL Server Express实体问题

时间:2011-12-03 03:40:27

标签: c# entity-framework sql-server-ce sql-server-express

我的应用程序使用SQL Server Ce作为数据库,使用Entity Framework作为ORM。 现在我正在尝试切换到SQL Server Express,但我遇到了麻烦。

更新

因此,在敲了3个小时之后,我终于发现你不能使用从SQL Server CE数据库生成的实体模型来对抗SQL Server(在我的案例中是Express版本)。

我使用Diff程序查看两个数据库的生成文件(Designer.cs),我注意到文件中存在以下差异:

SQL Server CE                          SQL Server 
FK__Download__000000000000003F         FK__Download__PlaneI__0519C6AF 

所以我必须创建两个实体模型,但是如何在我的程序中在两者之间进行交换?

如果我创建两个实体模型,我将有两个具有相同对象名称的类。

提前致谢

1 个答案:

答案 0 :(得分:1)

EDMX文件实际上由三部分组成。

  • CSDL,您的概念模型
  • SSDL,存储模型
  • MSL,这两者之间的映射。

通常这三个部分作为资源嵌入到程序集中,并且您使用的连接字符串告诉运行时在该程序集中查找它们。

但是,您可以使用物理文件并将其与您的应用程序一起部署。通过这种方式,您可以为特定数据库使用相同的CSDL,但使用不同的SSDL / MSL集。通过这种方式,您可以针对SqlCE数据库和SQL Server数据库重用实体模型。

Here you can find a blog post about swapping EF metadata