繁体   English   中英

在导航属性上定义数据注释

[英]Defining data annotations on a navigational property

我有一个Person类。 一个人有名字和称呼。 称呼是数据库中的另一个表(我继承了数据库)。

在UI中,我希望Salutation成为必填字段。 这是我的模型的样子:

public partial class Person
    {
        public virtual string Id { get; set; }

        public virtual Nullable<long> SalutationId { get; set; }

        [Required]
        public virtual Salutation Salutation { get; set; }

        public virtual string FirstName { get; set; }

        [DisplayName("Last Name")]
        public virtual string LastName { get; set; }
    }

    public partial class Salutation
    {
        public virtual long Id { get; set; }

        public virtual string SalutationName { get; set; }

        public virtual string Status { get; set; }

        public virtual ICollection<Person> People { get; set; }
    }

它是否正确? 即使我已经进入Salutation,我仍然会收到一个验证错误,上面写着“称呼是必填字段”。

这一切都是在一个小时前开始的,直到一切正常。

如果我有时间思考并且没有追逐截止日期,我会自己解决这个问题。 奇怪压力对你的想法有什么影响。

简答:问题出在您为称呼进行必要验证的地方

您的称呼验证属性应放在Salutation model

编辑:除此之外,您的模型在每个属性上使用public virtual访问修饰符。 如果我的模型不需要,我会删除virtual

@ElYusubov是正确的,但是: Person.SalutationId不应该是Nullable

public partial class Person
{
  public virtual long SalutationId { get; set; }
  ...

这意味着每个Person对象必须具有有效的SalutationId ,这反过来意味着数据库中的相关Salutation记录。

暂无
暂无

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

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