实体框架对象状态新/现有

时间:2016-06-01 16:38:45

标签: c# entity-framework

假设我创建了一个名为person的新对象,我想将它连接到已经在数据库中的一个名为address的记录。当我去保存Person对象时,我不想再次插入地址并创建副本。使用EF处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我发现最好的方法是只设置外键字段,而不是整个对象。

例如,

Person p = new Person();
p.Name = "John Doe";
p.AddressId = 12345;
context.People.Add(p);
context.SaveChanges();

这是Julie Lerman的一篇很棒的文章,解释了为什么EF重复记录。 https://msdn.microsoft.com/en-us/magazine/dn166926.aspx