好吧,我会尽我所能描述这一点。 例如 - 我在数据库中有两个表,员工&配置文件。 员工拥有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,所以我不与该对象一起工作,并且不会尝试再次添加它作为它的参考 - 但我真的没有认为我也应该有,我一定会错过一些东西,我可以直接选择这些元素作为对象,但分配它们总是会导致数据库重新添加配置文件等。