2010-12-02 46 views
2

我有一個生成上下文的EDMX模型。 現在我生成的自追蹤實體庫是單獨的項目,並從EDMX模型中引用此項。 還要將上下文中的正確名稱空間設置爲與實體相同的名稱空間。找不到WCF DataService EF實體

現在使用這個工作,除了當我嘗試創建一個WCF數據服務與此上下文。

因此,只需創建新的ObjectContext並直接使用它就可以正常工作。

不過話說引用的語境+模型lib和實體LIB加載

服務器遇到錯誤處理請求的服務時,我碰到下面的錯誤。異常消息爲'Value cannot be null. Parameter name: key'. See server logs for more details. The exception stack trace is:

現在我發現,這可以用與外部實體lib和修復數據服務時被覆蓋中的createContext發生

與代碼

收起

System.Data.Metadata.Edm.ItemCollection itemCollection; 
     if (!context.MetadataWorkspace.TryGetItemCollection 
       (System.Data.Metadata.Edm.DataSpace.CSSpace, out itemCollection)) 
     { 
      var tracestring = context.CreateQuery<ClientDataStoreContainer>("ClientDataStoreContainer.DataSet").ToTraceString(); 
     } 
     return context; 

現在錯誤消失,但我得到下一個,那是: Object mapping could not be found for Type with identity 'ClientDataStoreEntities.Data'. 此錯誤發生在.toTraceString在createcontext

的SSDL文件具有定義類型 收起

<EntitySetMapping Name="DataSet"> 
    <EntityTypeMapping TypeName="IsTypeOf(ClientDataStoreEntities.Data)"> 

因此具有加載ClientDataStoreEntities.Data類型是,我已經從模型生成的STE庫的名稱空間和類型。

編輯:與

var tracestring = context.CreateQuery<Data>("ClientDataStoreContainer.DataSet").ToTraceString(); 

它似乎加載所有類型的,但是現在的服務沒有,我可以調用任何方法。 應該有2 DataSet和PublishedDataSet但:

<service xml:base="http://localhost:1377/WcfDataService1.svc/"> 
− 
<workspace> 
<atom:title>Default</atom:title> 
</workspace> 
</service> 

是我所得到的。

回答

0

我遇到了同樣的問題(您提到的第一個問題)。我已經在本主題中使用了Julie Lerman的建議。另一個建議對我來說不起作用,儘管我會對它們進行更多的實驗,因爲Julie的解決方案可能會對性能產生影響,因爲它對每個查詢都會執行(並且有一定的成本)。

MSDN Fail to work with POCO ModelContainer which entities are located in other assembly

編輯:對不起,只是意識到你利用了這一主題中提到的其他解決方案。