0

我有一個應用程序使用實體框架5和POCO類使用代碼優先的方法。實體框架5與n層架構

這樣,我有一個波科類建模,這樣的方式我可以在模型(而不是EDMX東西)更好地控制每一個數據庫表。

應用程序工作正常,但現在我想添加一個WCF層,所以它的工作原理n層體系結構下。

這樣做的最佳方法是什麼?

我很熟悉WCF,但與ADO.NET數據集返回。我正在閱讀,爲了獲得最佳性能,您可以返回JSON而不是XML,所以想從專家那裏瞭解是否有任何示例可以查看如何使用實體框架實現WCF層,該實體框架將JSON對象返回給客戶端,反之亦然。

感謝和欣賞任何指導。

回答

1

如果您創建自定義類或使用實體框架類,則不存在此類更改。只有您必須將[DataContract]放在需要序列化的類的上面,而[DataMember]需要在該服務中序列化。

對於如。

[DataContract] 
public class Test 
{ 
    [DataMember] 
    public string field1 {get; set;} 

    [DataMember] 
    public string field2 {get; set;} 
} 

並創建WCF服務,您只需要把下面的代碼:

它會在服務接口,你只需要在類中實現。

[OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    List<test> GetTest(); 

我希望它能幫助你。 :)

+0

謝謝,這樣我就可以有一個單獨的Project.Models和參考,在我的客戶和我的WCF服務項目,只是添加datacontract和DataMember在每一個將被序列正確的屬性? – VAAA

+0

大其工作細..現在我只是呼籲在客戶端上的WCF方法我有當有一個問題: Model.User用戶= clientWCF.ValidateUser(「測試」,「測試」); 如果我運行,我得到一個錯誤,因爲用戶對象類型是不同於Model.User,是奇怪的,因爲是引用相同的模型。如果我使用: var user = clientWCF.ValidateUser(「test」,「test」);我可以看到裏面有什麼。 – VAAA

+0

您可以共享該服務的代碼,並分享model.user。所以我可以糾正這個問題。 :) –