entity framework为关联对象创建新的/重复的条目

我正在尝试使用Code First来创建SQL CE 4数据库。 运行下面的示例代码时,Entity Framework每次都会为产品插入新记录,即使数据完全相同。 我需要做些什么才能使Entity Framework不创建重复的关联产品? ForeignID1和Product对象中的值是数据库中已存在的值,但Entity Framework正在擦除我提供的ID并添加新ID。

namespace MyApp.Model { public class MyThing { public int ID { get; set; } [ForeignKey("Product")] public int ForeignID1{ get; set; } public virtual Product Product { get; set; } } } // Data.DataManager.cs public class DataManager : DbContext { public DbSet Things{ get; set; } public DbSet Products { get; set; } } 

这些是它输入的值。 表中应该只有一个值由多个MyThings引用

在此处输入图像描述

为了避免重复,您必须将相关实体附加到上下文:

 context.Products.Attach(myThing.Product); context.Things.Add(myThing); 

要么…

 myThing.Product = null; context.Things.Add(myThing); 

如果您已将myThing.ForeignID1设置为现有产品ID,则也可以正常工作。