如何在 Entity Framework 4.4 中实现 DBSet.AddOrUpdate?

Posted

技术标签:

【中文标题】如何在 Entity Framework 4.4 中实现 DBSet.AddOrUpdate?【英文标题】:How can I implement DBSet.AddOrUpdate in Entity Framework 4.4? 【发布时间】:2013-08-01 10:41:11 【问题描述】:

为了回应 Slauma 对我的问题 about running applications that use EF on Windows XP 的回答,我正在将我的应用程序从 Entity Framework 5.0 转换回使用 Entity Framework 5.0 和目标框架 .NET 4.0(也称为 Entity Framework 4.4)

但是我遇到以下错误;

System.Data.Entity.DbSet<MyEntity> does not contain a definition for AddOrUpdate 
and no extension method of a type System.Data.Entity.DbSet<MyEntity> accepting a 
first argument of type System.Data.Entity.DbSet<MyEntity> could be found.
(Are you missing a using directive or assembly reference )

我已尝试搜索此错误消息的片段,但没有取得多大成功。 奇怪的是甚至没有提到 4.4 in this Microsoft link EF4.4 甚至没有 SO 标签

【问题讨论】:

【参考方案1】:

您必须添加...

using System.Data.Entity.Migrations;

...添加到您的代码文件以使AddOrUpdate 可用。它是在System.Data.Entity.Migrations 命名空间中的IDbSetExtensions 类中实现的extension method of IDbSet&lt;T&gt;

【讨论】:

【参考方案2】:

当你enable migrations 为 MVC5 web 应用程序时,你在配置的 Seed 方法中得到如下注释:

//  You can use the DbSet<T>.AddOrUpdate() helper extension method 

我最初的尝试是针对用户DbSet&lt;MyEntity&gt;.AddOrUpdate()。这将导致与此问题中提出的错误消息相同(这是正确的)。 修复方法是阅读注释的其余部分并使用传递给 Seed 函数的上下文参数:

    context.MyEntity.AddOrUpdate();

【讨论】:

以上是关于如何在 Entity Framework 4.4 中实现 DBSet.AddOrUpdate?的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework Core 性能优化

Entity Framework Core 性能优化

Entity Framework Core 性能优化

Entity Framework Core 数据保存原理详解

Entity Framework Core 数据保存原理详解

一文学会使用Entity Framework Core