首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使实体框架在Web 2中显式地只添加已更改的对象的部分?

如何使实体框架在Web 2中显式地只添加已更改的对象的部分?
EN

Stack Overflow用户
提问于 2015-05-06 09:02:44
回答 1查看 482关注 0票数 0

我正在使用ASP.NET WebApi 2,并将部分关系数据库结构加载到前端网站。这允许用户对单个存储中的多个表进行更改,还可以查看一些额外的数据。

基本上效果很好。这意味着我可以在一次通话中存储更改,比如一个人的桌子及其相关的衣服和头发颜色,如下所示:

代码语言:javascript
复制
 db.person.Add(person);
 db.SaveChanges();

问题是,我不想加载所有相关数据。所以,在鞋表可能被加载,我不希望鞋带表装载有关鞋带的信息。

我遇到的问题是,有人试图将复制的鞋表存储到数据库中,尽管加载该表只是为了让用户查看这些细节。我猜想这是因为,我使用[JsonIgnore]属性来忽略对象的某些部分--因此,当它不是这样的时候,它就会将它识别为一个新的对象。

在调用Add之前,我可以遍历对象删除任何鞋信息,但这会很慢。

也许最好是发布第二个对象,该对象只包含已更改的项(在前端跟踪这些项之后)。有更好的办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 10:26:27

当您在EF中使用DbSet<T>.Add()时,实体(或者树中的所有实体,如果它是一个具有相关子实体的实体)作为Added附加到DbContext。这意味着当您调用SaveChanges时,EF将尝试插入数据库中的所有对象。这就是为什么你会有复制问题。

您需要学习如何使用EF在断开模式下工作。基本上,您需要跟踪每个实体的状态(即,如果必须插入、删除或更新这些实体时进行控制),并在将实体附加到上下文中时设置正确的状态。

在EF中查找有关处理断开连接的实体的文档,例如:

这些将解释如何处理断开连接的实体。

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

https://stackoverflow.com/questions/30072142

复制
相关文章

相似问题

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