繁体   English   中英

c#仅在更改链接对象时更新实体框架

[英]c# Entity framework updating of linked objects only when changed

在C#实体框架中,如果我有一个与另一个类(例如Product和ProductCategory)有关系的POCO类,以便每个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();

第一个问题是它是断开连接的图,然后您必须根据情况编写。

   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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM