实体框架:减少往返的方法?

Posted

技术标签:

【中文标题】实体框架:减少往返的方法?【英文标题】:Entity Framework: ways to reduce roundtrips? 【发布时间】:2018-06-03 19:54:37 【问题描述】:

EF 新手,我想了解是否可以放弃存储过程来进行基本的 crud 操作。例如,如何在没有两次往返的情况下实现“插入或更新”逻辑?

【问题讨论】:

【参考方案1】:

这在 EF6 中不受支持。插入操作预计会返回新记录的 ID,而更新预计将主要返回并发检测机制的时间戳。您也许可以将这两个操作映射到同一个存储过程,而只是不在更新中使用返回的 ID,但是为此存储过程将变得不必要地复杂。

我建议您不要偷懒,将不同的关注点分解到不同的程序中。以后维护代码会更容易。

哦,当然,如果不使用存储过程,您将无法实现您想要的。 EF 将为Added 状态下的每条记录生成一个INSERT,并为Modified 状态下的每条记录生成一个UPDATE

【讨论】:

AddOrUpdate 不正是这样做的(插入或更新)吗? 我不知道这一点,因为我没有使用 EF 迁移(这是 AddOrUpdate 的用途)。这里有一个有趣的帖子:michaelgmccarthy.com/2016/08/24/…

以上是关于实体框架:减少往返的方法?的主要内容,如果未能解决你的问题,请参考以下文章

减少投影的实体框架问题

使用实体框架最大化性能 [重复]

在实体框架中更新实体的最佳方法[重复]

实体框架代码优先 - 保存实体时设置属性的最佳方法是啥

最有效的实体框架代码第一方法展平/投影具有特定子实体的父实体

无法在 .NET 中的实体框架代码优先方法中迁移 AspNetUser 实体