【问题标题】:Keep getting Entitytype has no key defined继续获取 Entitytype has no key defined
【发布时间】:2015-06-13 13:53:52
【问题描述】:

我知道这个问题是重复的,但不幸的是我没有找到解决问题的方法。尽管有很多关于这个问题的帖子。

所以,就像主题所说的那样,我得到的例外是:

entitytype has no key defined

我的模型如下所示:

public class QuestionModel
{               
    public int ID { get; set; }

    [DisplayName("Question")]
    public string Question { get; set; }

    public List<string> Responses { get; set; }

    [DisplayName("Number of answers")]
    public int NumberOfAnswers { get; set; }
}

以及控制器中的代码:

[HttpPost]
    public ActionResult RegisterQuestion(QuestionModel model)
    {
        if (ModelState.IsValid)
        {
            using (var context = new DataBaseContext())
            {
                var question = new QuestionModel
                {
                    NumberOfAnswers = model.NumberOfAnswers,
                    Question = model.Question,
                    Responses = model.Responses
                };

                context.Question.Add(question);

                context.SaveChanges();
            }
        }

        return View("RegisteredQuestion");
    }

阅读了几篇文章,如果出现以下情况可能会出现此异常:

  1. 钥匙不见了:(我有钥匙,这里叫...int ID {...}
  2. 类名不等于ID成员名:(这对我来说不是问题,使用int ID
  3. 成员没有getter/setter:(但我有getter和setter)
  4. ID 成员不公开:(我的所有属性都是公开的)
  5. 存在多个 ID 时实体框架中的混乱。例如:

    公共 int oneID { 获取;放; } 公共 int anotherID { 获取;放; } 但这对我来说不是问题,因为我只有一个 ID。但以防万一,我确实尝试添加 Key 注释,所以我的 id 属性变为:
    [Key] public int ID { get; set; }

但没有运气。我已经注意到我遇到的这个错误的任何原因,但我仍然错过了一些东西。任何帮助都非常感谢

【问题讨论】:

  • 你试过用[Key]属性标记ID吗?
  • 为了完整起见,还要发布完整的异常详细信息和您的 DbContext。另外,什么版本的 EF?
  • 您的响应是字符串集合而不是响应集合。不确定EF将如何处理。你有响应类(即 QuestionModelId 等)吗?

标签: c# entity-framework asp.net-mvc-5


【解决方案1】:

我重新启动了我的 VS13(我不经常这样做,因为它总是打开的)。这有帮助。通常我只是重建项目,这就足够了。但肯定发生了一些有趣的事情。 很抱歉浪费您的时间。我也浪费了自己的时间没有重新启动VS,但我从来没有想过这个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2013-05-03
    • 2017-08-24
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多