2013-08-01 28 views
11

Đáp lại câu trả lời Slauma của câu hỏi của tôi about running applications that use EF on Windows XP Tôi đang chuyển đổi ứng dụng của tôi trở lại từ Entity Framework 5.0 để sử dụng Entity Framework 5.0 và khuôn khổ mục tiêu NET 4.0 (Còn được gọi là Entity Framework 4.4)Làm cách nào để triển khai DBSet.AddOrUpdate trong Entity Framework 4.4?

Tuy nhiên tôi gặp phải lỗi sau;

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) 

Tôi đã thử tìm kiếm trên các đoạn thông báo lỗi này, nhưng không có nhiều thành công. Kỳ lạ 4.4 được thậm chí không đề cập in this Microsoft link Thậm chí không có một thẻ SO cho EF4.4

Trả lời

29

Bạn phải thêm ...

using System.Data.Entity.Migrations; 

... để tập tin mã của bạn để có AddOrUpdate sẵn. Nó là extension method of IDbSet<T> được triển khai trong lớp IDbSetExtensions trong không gian tên System.Data.Entity.Migrations.

0

Khi bạn enable migrations cho các ứng dụng web MVC5, bạn sẽ có được những nhận xét sau đây trong các phương pháp Seed of cấu hình:

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

đâm ban đầu của tôi lúc này là sử dụng DbSet<MyEntity>.AddOrUpdate(). Điều này sẽ dẫn đến thông báo lỗi tương tự (và đúng như vậy) là thông báo được nêu ra trong câu hỏi này. Khắc phục là đọc phần còn lại của nhận xét và sử dụng tham số ngữ cảnh được chuyển vào hàm Seed:

context.MyEntity.AddOrUpdate();