Asp.net mvc 4 如何在使用EF4创建JSON响应时隐藏导航属性?
我正在开发一个Web服务应用程序,当我从我的EF模型(例如,我的“用户”对象的列表)中获得数据时,我会得到表的字段和外键,等等 有人知道如何避免这些吗?我一直在尝试修改poco模板,但运气不好Asp.net mvc 4 如何在使用EF4创建JSON响应时隐藏导航属性?,asp.net-mvc-4,entity-framework-4,Asp.net Mvc 4,Entity Framework 4,我正在开发一个Web服务应用程序,当我从我的EF模型(例如,我的“用户”对象的列表)中获得数据时,我会得到表的字段和外键,等等 有人知道如何避免这些吗?我一直在尝试修改poco模板,但运气不好 namespace JOhn.DataAccess { [Serializable()] [DataContract(Namespace = "")] public class CustomEntityObject : EntityObject {
namespace JOhn.DataAccess
{
[Serializable()]
[DataContract(Namespace = "")]
public class CustomEntityObject : EntityObject
{
//[DataMember]
[Browsable(false)]
[XmlIgnore]
[SoapIgnore]
public new EntityKey EntityKey { get; set; }
}
}
常见的解决方案是使用DTO(“数据传输对象”)模式 定义一个名为
UserDto
的新类,该类仅包含要通过API公开的字段,然后将值从User
实体对象复制到UserDto
实例
像这样的包可以用来避免编写值复制代码。一个常见的解决方案是使用DTO(“数据传输对象”)模式 定义一个名为
UserDto
的新类,该类仅包含要通过API公开的字段,然后将值从User
实体对象复制到UserDto
实例
可以使用类似的包来避免编写值复制代码。尝试创建一个模型类,并使用此模型绑定用户对象的数据。这将有助于克服依赖性 尝试创建一个模型类,并使用此模型绑定用户对象的数据。这将有助于克服依赖性 另一种不创建DTO的方法是使用。然后您的对象可能看起来像:
namespace John.DataAccess
{
[Serializable()]
[DataContract(Namespace = "")]
public class CustomEntityObject : EntityObject
{
//[DataMember]
[Browsable(false)]
[XmlIgnore]
[SoapIgnore]
[JsonIgnore]
public new EntityKey EntityKey { get; set; }
}
}另一种不创建DTO的方法是使用。然后您的对象可能看起来像:
namespace John.DataAccess
{
[Serializable()]
[DataContract(Namespace = "")]
public class CustomEntityObject : EntityObject
{
//[DataMember]
[Browsable(false)]
[XmlIgnore]
[SoapIgnore]
[JsonIgnore]
public new EntityKey EntityKey { get; set; }
}
}有一个
[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; }
}
}有一个
[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; }
}
}Hi Ross,谢谢你的回答,我的所有对象都基于自定义实体对象……因此我想我可以编辑自定义编辑对象……但我不知道如何编辑……唯一简单的解决方案是从每个对象的每个不需要的属性中删除[datamember]……是否有办法一次对所有对象执行此操作?我已经声明…这是自定义实体:我在上面添加了它。嗨,罗斯,谢谢你的回答,我的所有对象都基于自定义实体对象…所以我想我可以编辑自定义编辑对象…但我不知道如何…唯一简单的解决方案是删除[datamember]从每个对象的每个不需要的属性…是否有任何方法可以同时对所有对象执行此操作?我已经声明…这是自定义实体:我在上面添加了它。