使用实体框架模型从模板自动生成了以下类。
namespace Entities
{
using System;
using System.Collections.Generic;
public partial class Country
{
public Country()
{
this.Regions = new HashSet<Region>();
}
public long CountryId { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public bool Preferred { get; set; }
public System.DateTime LastChanged { get; set; }
public virtual ICollection<Region> Regions { get; set; }
}
}
我有一个Wcf Web服务,仅返回POX(Xml)和Json。我想返回自己的序列化对象,例如;
public class MyResponseObject
{
public int RequestId {get;set;}
public List<Country> CountryList {get;set;}
//other properties
}
但是我不想返回Regions ICollection。
然后可以使用类似的方法返回该对象
Newtonsoft.Json.JsonConvert.SerializeObject()
我最好以这种方式返回自己的序列化POCO对象吗?
在这样的项目中,您的类可以分为两种类型:
尽管可以为两个对象使用相同的对象,但不建议这样做,因为数据库实体对象是与外部接口(您的Web服务)分开的内部实现问题。您可能会在数据库表中添加或删除列,而不希望更改API合同。但是通常您会希望向服务使用者隐藏信息,例如数据库表Users ( UserId, Password )
,您绝对不希望该Password
属性消失!
另一个不这样做的原因是,您以后可能想将属性添加到Web服务协定类(例如,以控制输出格式或输入验证),将这些属性添加到实体对象是很痛苦的,即使在某些情况下不是不可能的。
我知道这听起来像是不必要的重复工作,因为大多数班级将拥有相同的成员,但是从长远的角度来看这是有道理的。
幸运的是,诸如AutoMapper之类的工具可以加快将数据从数据库实体对象复制到数据协定对象的过程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句