首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我是否可以回忆和更新尚未保存到数据库的实体框架中添加的实体?

我是否可以回忆和更新尚未保存到数据库的实体框架中添加的实体?
EN

Stack Overflow用户
提问于 2013-12-02 08:54:11
回答 2查看 268关注 0票数 1

我有一个MVC操作,它使用EF从CSV文件中导入数据。当我从CSV读取一个新记录时,我需要检查该记录是否已经存在,包括我在保存之前已经导入了的记录,这样我就可以更新它而不是创建一个新记录。

简单的解决方案是在每次调用SaveChanges()之后只使用dbContext.Entities.Add(newEntity),但我怀疑这并不是非常有效。这也意味着,在开始导入之前,我不能(轻松)回滚。也就是说,如果导入的任何部分失败,我可以避免调用SaveChanges()

我的问题是:在导入例程结束时,在调用dbContext.SaveChanges()之前,我可以搜索“添加”的实体,然后更新它们吗?

EN

Stack Overflow用户

发布于 2013-12-02 17:52:33

是的,您可以检查每个导入的实体是否已经存在于数据库中。使用相同的上下文,并尝试一个一个地在数据库中找到它们。

如果该实体不存在于数据库中,则保持原样(tha在添加状态下)

如果实体已经存在于数据库中,那么修改从DB加载的实体:它没有改变,因为您刚刚从DB读取了它,但是,当您修改它时,它将处于Modified状态,这样,当您保存更改时,它将被更新。但是还有一个非常重要的步骤:您在数据库中找到的导入实体必须与上下文分离,以便在调用SaveChanges()时被忽略。

如果你不明白什么是分离一个实体,请阅读下面这篇感人文章:实体框架添加、删除、附加和分离

这解决了将所有更改保存在一个操作中的问题。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20324216

复制
相关文章

相似问题

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