0

在 C# 的实体框架中,如果我有一个与另一个类有关系的 POCO 类 - 例如 Product 和 ProductCategory,因此每个 Product 必须有一个存在于 Category 表中的类别列 ID,我可以构造 POCO 类关系很好,并调用repository.save。此时,如果它们不存在,它会在数据库中创建类别和产品行。

如果我尝试然后插入具有相同类别对象的新的第二个产品,那么它会尝试再次保存产品和类别,并抱怨更新了 0 行,因为我在类上有 [ConcurrencyCheck] 属性。

我希望它的行为如此,如果我保存第二个产品并且链接的类别对象已经存在并且没有更改,它不会更新它但仍然保存产品。

这可能吗?

例如

Category c = new Category();
Product p1 = new Product { Category = c };
repository.Insert(p1);
repository.Save();

Product p2 = new Product { Category = c };
repository.Insert(p2);
repository.Save();
4

1 回答 1

0

第一个问题是它是断开连接的图表,那么您必须根据场景编写。

   DbSet.Add() will try to add all

   DbSet.Attach() will make sure context is aware of objects but state of elements will be unchanged.

   Context.Entry(entity).State=EntityState is how you can say what has been modified, added or deleted.

我希望这有帮助。

资料来源:(PluralSight、Julie Lerman、EF in Enterprise)

于 2013-09-26T10:04:46.330 回答