繁体   English   中英

EF NotMapped和JsonIgnore属性导致代码优先问题

[英]EF NotMapped & JsonIgnore attributes causing code-first issues

我有一些模型类,它们被用作实体框架代码优先模型。 我在这些模型上有一些不属于数据库模式的属性,为了确保实体框架不会混淆,我使用[NotMapped]属性标记了这些属性。 当我为模型生成代码优先迁移时,会正确忽略这些属性。

但是,我最近将[JsonIgnore]属性添加到这些相同的属性中,因为模型类正在被去序列化,并且这些属性不适合包含在序列化中。 这也可以正常工作 - 但它具有EF代码优先迁移的非常奇怪的结果,而不是识别[NotMapped]属性。 现在我得到的错误是实体框架认为模型类与数据库不同步 - 但是当我生成新的迁移时,它认为它需要为所有以前未映射的属性添加列。 从这些属性中删除[JsonIgnore]属性可解决此问题。

我发现这个问题之前已经经历过,在Entity Framework的上下文之外,在这个问题中(没有答案): 将[JsonIgnore]应用于属性会导致DataAnnotation属性“丢失”

这是C#属性系统的一个易于理解的行为吗? 或者它是否特定于[JsonIgnore]属性 - 如果是这样,是什么原因造成的?

尝试使用[DataContract][DataMember]属性来定义要序列化的属性。

[DataContract]
public class EntityA
{
    [DataMember]
    public string SerializeThisProperty { get; set; }

    [NotMapped]
    public string DoNotSerializeThisProperty { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM