【发布时间】:2016-08-04 09:50:37
【问题描述】:
我让我的不同项目工作,不得不改变模型中的一个小东西,这迫使我放弃我的表格并重新创建它们。经过长时间的研究,我发现我必须使用 Initializers (DropCreateDatabaseAlways)。此外,我创建了一些自定义初始化程序来为我的数据库播种测试数据。现在,每次我运行我的应用程序时,都会收到以下异常:
身份为“SGDB.DAL.Contexts.Person_Department”的成员确实 元数据集合中不存在。参数名称:身份。
在我更改模型之前(与人与部门之间的关系无关)一切正常。此外,我所有模型的标识符都命名为 Id(正如 EF 所期望的那样)并用 [Key] 属性装饰。
是的,我已经阅读了有关此主题的其他主题,但解决方案是为每个外键(在我的情况下为 Person.cs 中的 DepartmentId)创建一个 Id 属性,但我不喜欢这样 - 特别是因为我知道以前工作过。
可能是什么原因?
更新 1:
我正在尝试播种以下新人员:
protected override void Seed(PersonContext context) {
base.Seed(context);
var dep = new DAL.Contexts.DepartmentContext().Departments.First();
var status = new Status {
StatusType = "Test"
};
var persondata = new PersonData {
Status = status
};
context.Status.Add(status);
context.PersonData.Add(persondata);
for (int i = 0; i < 10; i++) {
var person = new Person {
Firstname = $"TestPersonFirstname{i}",
Lastname = $"TestPersonLastname{i}",
SourceType = COM.SourceType.Manual,
Department = dep,
PersonData = persondata
};
context.Persons.Add(person);
}
context.SaveChanges();
}
【问题讨论】:
标签: c# entity-framework exception datacontext