Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework EF保存同一对象的多个实例_Entity Framework_Entity Framework 5 - Fatal编程技术网

Entity framework EF保存同一对象的多个实例

Entity framework EF保存同一对象的多个实例,entity-framework,entity-framework-5,Entity Framework,Entity Framework 5,情况是这样的。我为一个产品创建一个对象,然后通过我的db上下文保存它。然后,我从数据库中加载该产品,并将其放入另一个objectdownload并保存该对象。EF然后为加载的原始产品创建另一个db条目。现在我在db中有两个相同的产品。这是否按预期工作?我认为EF会跟踪从数据库加载的对象,以防止类似的事情发生 好的,这里有一些随机代码,如果你真的想要的话 product product1 = new product{blah blah blah}; context.Products.add(pro

情况是这样的。我为一个产品创建一个对象,然后通过我的db上下文保存它。然后,我从数据库中加载该产品,并将其放入另一个objectdownload并保存该对象。EF然后为加载的原始产品创建另一个db条目。现在我在db中有两个相同的产品。这是否按预期工作?我认为EF会跟踪从数据库加载的对象,以防止类似的事情发生

好的,这里有一些随机代码,如果你真的想要的话

product product1 = new product{blah blah blah};
context.Products.add(product1);
context.savechanges();

var prod1 = context.Products.Where(x => x.Id == 1).FirstOrDefault();

user = new User { new Download {product = (product)prod1}};
context.Users.add(user);
context.save(user);
下面是一个例子:

var prod = context.Products.SingleOrDefault(p => p.Id == 1);
User user = context.Users.Create();
user.Product = prod;
context.Users.Add(user);
context.SaveChanges();
或者更容易

User user = context.Users.Create();
user.ProductId = productId;
context.Users.Add(user);
context.SaveChanges();

为什么实体框架会将现有对象重新插入到我的数据库中?所以基本上,问题源于我创建的用户与上下文断开连接的事实?