我得到了我的不同項目的工作,不得不改變模型中的一個小東西,迫使我放棄我的表並重新創建它們。 。研究我發現我必須使用初始化器(DropCreateDatabaseAlways)長時間此外,我創建了一些自定義的初始值設定爲種子我的數據庫測試數據現在每次我跑我的應用程序收到以下異常:實體框架元素集合中不存在成員
元數據集中不存在標識爲'SGDB.DAL.Contexts.Person_Department'的成員 。參數名稱:標識
在我改變我的模型之前(與Person和Department之間的關係無關),一切正常。此外,我所有模型的標識符都被命名爲Id(如EF所期望的)並用[Key]屬性進行裝飾。
是的,我已經閱讀了關於這個主題的其他線索,但是解決方案是爲每個外鍵創建一個Id屬性(在我的情況下是Person.c中的DepartmentId),但是我不喜歡那個 - 特別是因爲我知道它工作過。
可能是什麼原因?
更新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();
}
關閉驗證並未解決我的問題。您首次提到的解決方案嘗試如何工作?我對EF非常陌生 - 我將一個新部門種入數據庫,並在接種新人時調用這個數據集(var department = new DepartmentContext()。Departments.First();) - 或者這可能是問題?如果是這樣 - 我應該如何從數據庫檢索數據以插入新人? – C4p741nZ