我發現這個問題有多個帖子,但是我的問題有點不同,顯示的錯誤與我的場景。實體框架:附加類型'MODELNAME'的實體失敗,因爲另一個相同類型的實體已經具有相同的主鍵值
我有兩個不同的數據庫模式。例如
在我的代碼PreSchool.Students
&School.Students
。並且根據我們的要求,對於Students
表格(包括主鍵)的休息都是相同的。現在,我更新的 'PreSchool.Students' 使用下面的代碼記錄:
var wouldBeUpdatedStudent = await context.Students .FindAsync(student.StudentIdentity).ConfigureAwait(false); wouldBeUpdatedStudent = student; //updated student object context.Entry(wouldBeUpdatedStudent).State = EntityState.Modified; // This line throws error var result = await context.SaveChangesAsync().ConfigureAwait(false);
在
OnModelCreating
我清楚地爲每個實體的設置tableName
&SchemaName
。由此,我希望每當我更改實體/模型狀態時,都應該按照OnModelCreating
的設置捕捉正確的表格。但是,這不會發生並拋出異常。
我嘗試使用
context.Students.AsNoTracking()
這個作品,如果沒有級聯到學生的實體。但是,有一些級聯/子級實體也是相同的DDL。例如context.Student.Exams
幾年前我問了一個非常類似的問題。那時的答案是「實體框架不支持Sql Server中不同模式中的同名表。」 –
@ SamAxe,幸運的是,我試過[這個答案](https://stackoverflow.com/a/31771363/659538)併爲我工作。 – Kenz