我正在开发一个Web服务应用程序,当我从我的EF模型中获取时 - 例如我的“用户”对象的列表 - 我得到了我的表的字段PLUS外键等?
有谁知道如何避免这些?我一直试图修改poco模板,但没有运气。
namespace JOhn.DataAccess
{
[Serializable()]
[DataContract(Namespace = "")]
public class CustomEntityObject : EntityObject
{
//[DataMember]
[Browsable(false)]
[XmlIgnore]
[SoapIgnore]
public new EntityKey EntityKey { get; set; }
}
}
答案 0 :(得分:2)
一个常见的解决方案是使用DTO("数据传输对象")模式。
定义一个名为UserDto
的新类,其中只包含您要通过API公开的字段,然后将值从User
实体对象复制到UserDto
实例。
AutoMapper之类的软件包可用于避免编写值复制代码。
答案 1 :(得分:1)
有一个
[ScriptIgnore]
属性,它适用于Microsoft的默认JavaScript序列化程序。
namespace AutoFX.DataAccess
{
[Serializable()]
[DataContract(Namespace = "")]
public class CustomEntityObject : EntityObject
{
//[DataMember]
[Browsable(false)]
[XmlIgnore]
[SoapIgnore]
[ScriptIgnore]
public new EntityKey EntityKey { get; set; }
}
}
答案 2 :(得分:0)
尝试创建模型类并使用此模型绑定用户对象的数据。这将有助于克服依赖性。
答案 3 :(得分:0)
在不创建DTO的情况下执行此操作的另一种方法是使用JSON.Net in your MVC Application。然后你的对象看起来像:
namespace John.DataAccess
{
[Serializable()]
[DataContract(Namespace = "")]
public class CustomEntityObject : EntityObject
{
//[DataMember]
[Browsable(false)]
[XmlIgnore]
[SoapIgnore]
[JsonIgnore]
public new EntityKey EntityKey { get; set; }
}
}