实体框架.net:" Name值应该是有效的导航属性名称。"

时间:2015-08-31 15:37:43

标签: c# asp.net entity-framework foreign-keys

您好我正在与ASP.Net开展一个项目,并且我正在跟随微软的训练营。我试图向我发布的api做一个REST请愿,然后我得到了下一个例外:

  

属性' QuestionId'上的ForeignKeyAttribute在类型上   ' PlataformaTest.Models.AnswerModel'无效。导航   属性' OptionModel'在依赖类型上找不到   ' PlataformaTest.Models.AnswerModel&#39 ;. Name值应该是有效的   导航属性   命名"" exceptionType":" System.InvalidOperationException"

顺便说一句,我没有逐字逐句地遵循训练练习,我改变了一些名字,所以,试图找出从零开始的所有过程。

非常感谢任何帮助和指导。谢谢。

1 个答案:

答案 0 :(得分:26)

确定。我已经解决了这个问题。万一有人遇到同样的问题,这就是问题和答案:

我有我的实体:

namespace PlataformaTest.Models
{
    public class AnswerModel
    {
        public int Id { get; set; }

        public string UserId { get; set; }

        [ForeignKey("OptionModel"), Column(Order = 0)]
        public int QuestionId { get; set; }

        [ForeignKey("OptionModel"), Column(Order = 1)]
        public int OptionId { get; set; }

        [JsonIgnore]
        public virtual OptionModel OptionModelEx { get; set; }
    }
}

但我发现了,

ForeignKey("OptionModel") 

必须与“虚拟”变量具有相同的名称。像这样:

namespace PlataformaTest.Models
{
    public class AnswerModel
    {
        public int Id { get; set; }

        public string UserId { get; set; }

        [ForeignKey("OptionModel"), Column(Order = 0)]
        public int QuestionId { get; set; }

        [ForeignKey("OptionModel"), Column(Order = 1)]
        public int OptionId { get; set; }

        [JsonIgnore]
        public virtual OptionModel OptionModel { get; set; }
    }
}

我认为它必须有Class的名称,但它没有。它查找要映射实体的外键的对象的名称。