2011-12-03 62 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