2010-09-10 59 views
0

我有一些重構的麻煩,也許有人知道爲什麼...跨項目共享實體框架對象?

在一個解決方案中,我有一個WCF服務。在另一個解決方案中我有一個RIA應用程序。由於這兩者之間的SQL數據庫是相同的,我想創建一個單獨的項目,在其中承載edmx文件以及域服務。如果我直接在WCF項目中創建edmx文件,並在RIA端執行相同的操作,則一切正常。

但是當我試圖把這個edmx文件放到一個單獨的項目中並添加對它的引用時,我得到了我的實體對象無法找到的各種奇怪的錯誤。 WCF服務本身看起來很好,因爲它引用了edmx項目並編譯得很好。

但是WCF客戶端項目對WCF服務引用了實體引用的服務引用。即使添加edmx程序集也沒有什麼幫助 - 有些實體被發現其他人不是。很奇怪。

任何人都知道我錯過了什麼?

回答

0

根據您迄今發佈的內容,並確保您確保「edmx」項目具有新的名稱空間,該名稱空間也被其他項目使用。

如果我讀你正確地說什麼:

  • 您的WCF服務器引用 「EDMX」 項目。
  • 您的WCF客戶端引用WCF 服務器和「edmx」項目。

它可能和循環引用衝突一樣簡單。確保兩個其他項目中的任何「edmx」引用數據都不公開,以防客戶端從服務器項目中拾取「edmx」數據。

同時檢查缺少的項目是否留在內部的默認可訪問性(未定義時)。

2

將連接字符串複製到試圖使用該模型的所有項目中。 但是,在連接字符串中,刪除OR'd資源指針。

例如全部實體連接

<connectionStrings> 

    <add name="AwesomeEntityModel" 
     connectionString="metadata=res://*/AwesomeEntityModel.csdl|res://*/AwesomeEntityModel.ssdl|res://*/AwesomeEntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=NEILHIGHLEY.COM;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 

將其修改如下;

<connectionStrings> 
    <add name="AwesomeEntityModel" 
     connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=NEILHIGHLEY.COM;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings>