[英]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.