我有一个这样的课程:
public class Customer : Entity
{
[Required]
public string Forename { get; set; }
[Required]
public string Surname { get; set; }
public virtual ICollection<GazetteerLinks> GazetteerLinks { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
它由1和n个子类之间的继承。有没有办法可以在某些子类上禁用Required注释?我不是100%确定来自第三方的所有数据集都能满足要求,但我希望在我自己创建的数据集上强制执行。
答案 0 :(得分:2)
我对此有一个评论和答案。
评论:在您描述的情况下,Required
注释没有任何业务存在。如果您正在访问第三方并且不确定他们是否需要这些属性,那么您需要使它们可以为空。对于您自己的数据集,我强烈建议使用ViewModel对象,然后对该对象进行一些验证,并且只有在通过验证后才创建数据库对象并将其保存到数据库中。这样你就可以获得两全其美:你不必担心第三方不需要它,你自己的工作需要验证。
答案:我和我最近一直在做的项目情况类似。我最终做的是使该类成为一个抽象类,然后覆盖子类中的值。如果您覆盖该属性并具有不同的注释,则EF足够聪明,只能查看用于创建表的覆盖。