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

4
我有一些模型类,用作Entity Framework的Code First模型。我有一些属性不是数据库模式的一部分,并且为了确保Entity Framework不会混淆,我已经在这些属性上标记了[NotMapped] 属性。当我为模型生成Code First迁移时,这些属性被正确忽略。
然而,最近我将[JsonIgnore]属性添加到相同的属性中,因为模型类正在进行序列化/反序列化,这些属性不适合包含在序列化中。这也很好地工作了,但它产生了非常奇怪的结果:EF Code First迁移不认识[NotMapped]属性。现在我遇到了这个错误,Entity Framework认为模型类与数据库不同步,但当我生成新的迁移时,它认为需要添加所有先前未映射的属性列。删除这些属性的[JsonIgnore]属性可以解决这个问题。
我看到这个问题之前已经出现过,不涉及Entity Framework的上下文,在这个问题中(没有答案):应用[JsonIgnore]属性会导致DataAnnotation属性"丢失" 这是C#属性系统中一个被理解的行为吗?还是它只适用于[JsonIgnore]属性-如果是,是什么引起了这个问题?
1个回答

2
尝试使用[DataContract][DataMember]属性来定义要序列化的属性。
[DataContract]
public class EntityA
{
    [DataMember]
    public string SerializeThisProperty { get; set; }

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

我会尝试这个方法,看看是否有效。但是你能解释一下为什么使用JsonIgnore会导致这个问题吗? - NWard
2
这解决了我的问题。谢谢。我仍然好奇为什么JsonIgnore首先引起了它。 - NWard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接