2013-08-01 27 views
11

针对Slauma的回答我的问题about running applications that use EF on Windows XP我5.0转换我的应用程序恢复从实体框架使用实体框架5.0和目标框架.NET 4.0(也称为实体框架4.4)如何在实体框架4.4中实现DBSet.AddOrUpdate?

但是我遇到下面的错误;

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

回答

29

您必须添加一个SO标签...

using System.Data.Entity.Migrations; 

...您的代码文件有AddOrUpdate可用。它是在System.Data.Entity.Migrations名称空间中的IDbSetExtensions类中实现的extension method of IDbSet<T>

0

当你enable migrations为MVC5 Web应用程序,你在配置种子方法如下评论:

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

我在这最初的刺是用户DbSet<MyEntity>.AddOrUpdate()。这将导致与此问题中提出的相同的错误信息(并且正确)。 解决的办法是读取其余的注释并使用传递给Seed函数的上下文参数:

context.MyEntity.AddOrUpdate();