0

我正在开发一个 Web 服务应用程序,当我从我的 EF 模型中获取时——例如我的“用户”对象的列表——我得到了我的表的字段加上外键等?

有谁知道如何避免这些?我一直在尝试修改 poco 模板,但没有运气。

     namespace JOhn.DataAccess
{
    [Serializable()]
    [DataContract(Namespace = "")]
    public class CustomEntityObject : EntityObject
    {
        //[DataMember]
        [Browsable(false)]
        [XmlIgnore]
        [SoapIgnore]
        public new EntityKey EntityKey { get; set; }

    }
}
4

4 回答 4

2

一个常见的解决方案是使用 DTO(“数据传输对象”)模式。

定义一个名为的新类,该类UserDto仅包含您希望通过 API 公开的字段,然后将值从您的User实体对象复制到一个UserDto实例。

可以使用AutoMapper之类的包来避免编写值复制代码。

于 2013-07-29T09:09:45.907 回答
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; }
  }

}

于 2013-07-29T18:55:05.693 回答
0

尝试创建一个模型类并使用此模型绑定用户对象的数据。这将有助于克服依赖关系..

于 2013-07-29T10:36:20.813 回答
0

另一种不创建 DTO 的方法是在 MVC Application 中使用 JSON.Net。然后你的对象可能看起来像:

namespace John.DataAccess
{
  [Serializable()]
  [DataContract(Namespace = "")]
  public class CustomEntityObject : EntityObject
  {
    //[DataMember]
    [Browsable(false)]
    [XmlIgnore]
    [SoapIgnore]
    [JsonIgnore]
    public new EntityKey EntityKey { get; set; }
  }

}

于 2013-07-29T18:52:14.123 回答