C# 尝试使用EF添加休闲数据时,对象状态管理器中已存在具有相同键的对象

C# 尝试使用EF添加休闲数据时,对象状态管理器中已存在具有相同键的对象,c#,sql,linq,entity-framework,linq-to-entities,C#,Sql,Linq,Entity Framework,Linq To Entities,我在EDM上有如下所示的关系数据库。当我试图提交一份包含两个现有F_Producto_ProductoCompra的新F_Orden,并且该F_ProductoCompra有一个现有的FDDistributor时,我在标题上看到了错误提示。正确的方法是什么?请帮忙,我会非常感激的 using (var context = new DryTypeEntities()) { //**************************************

我在EDM上有如下所示的关系数据库。当我试图提交一份包含两个现有F_Producto_ProductoCompra的新F_Orden,并且该F_ProductoCompra有一个现有的FDDistributor时,我在标题上看到了错误提示。正确的方法是什么?请帮忙,我会非常感激的

 using (var context = new DryTypeEntities())
        {
             //**************************************
            //Insert Order              
            FDistributor distributor1 = context.FDistributors.FirstOrDefault(p => p.Name == "Dverdesoto");
            F_Producto_ProductoCompra productocompra1 = new F_Producto_ProductoCompra
            {
                FechaExpiracon = "3/13/2015",
                CostoCompra = "1",
                DescuentoCompra = "10%",
                Id = 2
            };

            F_Producto_ProductoCompra productocompra2 = new F_Producto_ProductoCompra
            {
                FechaExpiracon = "3/13/2015",
                CostoCompra = "1",
                DescuentoCompra = "10%",
                Id = 3
            };

            F_Orden orden1 = new F_Orden
            {
                Fecha = DateTime.Now,
                Total = 12,
            };

            orden1.F_Producto_ProductoCompra.Add(productocompra1);
            orden1.F_Producto_ProductoCompra.Add(productocompra2);
            distributor1.F_Orden.Add(orden1);
            context.F_Orden.AddObject(orden1);
            context.FDistributors.AddObject(distributor1);
            context.SaveChanges();
}


为什么要手动设置Id的值

我相信表[F_Producto_ProductoCompra]中的标识符是
Id INT-IDENTITY(1,1)主键

因此可能与标识符发生冲突。
可能确实存在具有相同Id的行。

假设我在数据库中已经有一个Id为2的F_Producto,Nombre=“Aspirine”。我如何将F_Producto_Producto Compra与我的F_Producto联系起来。因为它继承了FPProducto?