我首先使用的是实体框架v6.0 DB。
我遇到一个问题,即由于某个导航属性,某个类因序列化而中断。
当我添加到自动生成的cs类时,属性 IgnoreDataMember 一切都按预期工作(序列化传递),但我当然不能把它留在那里,因为接下来有人生成脚本它会消失的时间所以我创建了MetaData类,如下所示,它只是无法正常工作。 (序列化仍然破裂)
元数据:
public class SomeClassMetaData
{
[IgnoreDataMember]
public virtual ICollection<SomeFoo> FOO { get; set; }
}
部分(非自动生成)类:
[MetadataType(typeof(SomeClassMetaData))]
public partial class SomeClass
{
}
类的部分(自动生成)部分:
public virtual ICollection<SomeFoo> FOO { get; set; }
我查了一下:
不知道出了什么问题。
答案 0 :(得分:1)
可悲的是[IgnoreDataMember]不适用于EF6代理对象。 Metadatatype仅适用于DataAnnotations。不适用于序列化。必须直接在实体中的属性上指定。如果使用T4模板生成类,则可能需要添加一些逻辑以直接在模板中创建这些属性。您应该考虑执行此操作的功能称为“结构注释”。请查看此链接以获取更多信息。
https://blogs.msdn.microsoft.com/efdesign/2008/08/12/structural-annotations-one-pager/
答案 1 :(得分:0)
根据Raj的回答,这是不可能做到的。
我做的解决方法是选择没有该导航属性的表。 (在我的例子中,我们使用oData,所以只使用$ select到除了这一列之外的所有列。)