1

我有这样的课:

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 个子类继承。有没有办法可以在某些子类上禁用必需的注释?我不能 100% 确定来自第三方的所有数据集都能满足要求,但我想在我自己创建的数据集上强制执行。

4

1 回答 1

2

我对此有评论和答案。

评论:Required在您描述的情况下,该注释不存在任何业务。如果您向第三方授予访问权限并且不确定他们是否需要这些属性,那么您需要将它们设置为可为空。对于您自己的数据集,我强烈建议您使用 ViewModel 对象,然后对该对象进行一些验证,并且只有在它通过验证后才创建数据库对象并将其保存到数据库中。这样您就可以两全其美:您不必担心第 3 方不需要它,而您自己的工作将需要验证。

答案是:我最近在做的一个项目也有类似的情况。我最终做的是使该类成为抽象类,然后覆盖子类中的值。如果您覆盖该属性并具有不同的注释,则 EF 足够聪明,知道只查看用于制作表格的覆盖。

于 2013-02-12T18:36:37.027 回答