簡體   English   中英

.NET WCF Rest服務對實體框架模型進行序列化

[英]Serialization of Entity Framework Models with .NET WCF Rest Service

我正在嘗試建立一個非常簡單的REST風格的界面,以便與我們的合作伙伴進行交流。 API中的一個示例對象是伙伴,我們希望像這樣對它進行序列化:

<partner>
    <id>ID</id>
    <name>NAME</name>
</partner>

如果我們簡單地將伙伴類聲明為:這是使用.NET 4.0 WCF REST模板實現的相當簡單的方法:

public class Partner
{
    public int Id {get; set;}
    public string Name {get; set;}
}

但是,當我使用實體框架定義和存儲Partner對象時,產生的序列化看起來像這樣:

<Partner p1:Id="NCNameString" p1:Ref="NCNameString" xmlns:p1="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/TheTradeDesk.AdPlatform.Provisioning">
  <EntityKey p1:Id="NCNameString" p1:Ref="NCNameString" xmlns="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses">
    <EntityContainerName xmlns="http://schemas.datacontract.org/2004/07/System.Data">String content</EntityContainerName>
    <EntityKeyValues xmlns="http://schemas.datacontract.org/2004/07/System.Data">
...

將該XML用作外部API顯然是不可接受的。 對於將EF用於數據存儲但維護簡單的XML序列化接口有哪些建議的機制?

按照問題中的定義,將項目投影到您的Partner類型上:

var q = from p in Context.Partners
        select new MySerializationTypes.Partner
        {
            Id = p.Id,
            Name = p.Name
        };

...然后序列化。

看來,您將需要一組對象來在EF和外部API之間提供一層。

盡管它看起來是多余的,但這並不是完全史無前例的做法。 當您需要在視圖和基礎數據存儲之間建立抽象層時,它始終以MVC模式進行。

附加的抽象層使您能夠定義所需的確切接口,並具有以所需的精確方式與EF交互的靈活性和控制能力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM