【发布时间】: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");
}
阅读了几篇文章,如果出现以下情况可能会出现此异常:
- 钥匙不见了:(我有钥匙,这里叫...
int ID {...} - 类名不等于ID成员名:(这对我来说不是问题,使用
int ID) - 成员没有getter/setter:(但我有getter和setter)
- ID 成员不公开:(我的所有属性都是公开的)
-
存在多个 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