如何在 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<T>
。
【讨论】:
【参考方案2】:当你enable migrations 为 MVC5 web 应用程序时,你在配置的 Seed 方法中得到如下注释:
// You can use the DbSet<T>.AddOrUpdate() helper extension method
我最初的尝试是针对用户DbSet<MyEntity>.AddOrUpdate()
。这将导致与此问题中提出的错误消息相同(这是正确的)。
修复方法是阅读注释的其余部分并使用传递给 Seed 函数的上下文参数:
context.MyEntity.AddOrUpdate();
【讨论】:
以上是关于如何在 Entity Framework 4.4 中实现 DBSet.AddOrUpdate?的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework Core 数据保存原理详解