2011-12-03 49 views
0

我的应用程序使用SQL Server Ce作为数据库和实体框架作为ORM。 现在我试图切换到SQL Server Express,但我遇到了麻烦。从SQL Server CE切换到SQL Server Express实体问题

UPDATE

所以敲我的头3小时,我终于想通了,你不能使用从针对SQL Server中的SQL Server CE数据库生成的实体模型(在我的情况下,快速的版本)之后。

我用了一个DIFF程序来查看生成的文件(Designer.cs)这两个数据库,我注意到在文件中这些差异:

SQL Server CE       SQL Server 
FK__Download__000000000000003F   FK__Download__PlaneI__0519C6AF 

所以我要创建两个实体模型,却怎么也在我的程序中,我在两者之间进行交换?

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

在此先感谢

回答

1

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

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

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

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

Here you can find a blog post about swapping EF metadata

+0

感谢科尔特的答案,但遗憾的是在这种情况下,这是行不通的。当我更改连接字符串+ ssdl文件中的信息以反映使用Sql Express时,我在尝试查询数据时遇到了一个奇怪的异常。使用Sql Ce创建的实体类与从Sql Server创建的实体类不同。就像我上面提到的,看着自动生成的实体类,我在两个类中看到了很多不同之处。 – ArmenB