首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在新实体上初始化ICollections,以便将项自动添加到变更跟踪器中

如何在新实体上初始化ICollections,以便将项自动添加到变更跟踪器中
EN

Stack Overflow用户
提问于 2012-11-10 01:29:04
回答 1查看 200关注 0票数 0

我相信,如果您使用linq或.Find命令加载数据库对象,调用中也包含的子集集会自动将项添加到changetracker中并保存它们:

代码语言:javascript
复制
entity.Children.Add(entityChild);

这将把它添加到附加实体的变更跟踪器中。

但是,如果您正在创建一个新的实体,并且在构造函数上将ICollection设置为一个新的HashSet(),那么当您执行Children.Add(entityChild)行时,它不会添加到更改跟踪器中。

如何初始化新对象的ICollections,以便在添加到子对象时将其添加到更改跟踪器中?

我认为如果您添加了父对象,那么应该也添加所有新的子项到变更跟踪器中(例如,创建父项,添加子对象,然后将父项添加到DbSet中也应该将子项添加到更改跟踪器中,对吗?)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-10 06:00:11

如果要在启用更改跟踪的情况下创建实体类型的新实例,则需要使用DbSet上的Create method

您还可以通过在DbContext.ChangeTracker上调用DetectChanges method来手动启动更改检测。

最后,如果您想要向POCO类添加大量代码,可以查看由self-tracking entities template生成的代码。这实际上与EF对查询数据库时返回的对象所使用的代码相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13312986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档