好吧,我會盡我所能描述這一點。 例如 - 我在數據庫中有兩個表,員工&配置文件。 員工擁有ProfileID的外鍵,因此1個配置文件可以分配給許多員工以確定他們的訪問權限,一切都很好。實體框架重新添加現有數據庫對象
在使用c#的EF中 - 當選擇說創建一個員工並設置一個已經存在的配置文件如下所示時,它會嘗試再次將該配置文件添加到數據庫中?
using (var ds = new DSEntities())
{
Employee e = new Employee();
e.AccessProfile = ds.AccessProfiles.First();
ds.Employees.Add(e);
ds.SaveChanges();
}
只有員工記錄是新的,而配置文件不是。任何人都可以確認它爲什麼這樣做? 我可以直接設置Employee.AccessProfileID鍵,並將其設置爲ds.AccessProfiles.First()。AccessProfileID,所以我不與該對象一起工作,並且不會嘗試再次添加它作爲它的參考 - 但我真的沒有認爲我也應該有,我一定會錯過一些東西,我可以直接選擇這些元素作爲對象,但分配它們總是會導致數據庫重新添加配置文件等。