2015-07-01 11 views
6

Trong ứng dụng MVC4 của tôi, tôi đang tham chiếu đến hội mẫu EF của tôi. Mọi thứ đều hoạt động tốt. Đột nhiên tôi bắt đầu nhận được thông báo lỗi dưới đây.Ví dụ về cấu hình DbConfiguration được sử dụng trước khi loại 'EFConfiguration' được phát hiện

The default DbConfiguration instance was used by the Entity Framework before the 'EFConfiguration' type was discovered. An instance of 'EFConfiguration' must be set at application start before using any Entity Framework features or must be registered in the application's config file. See http://go.microsoft.com/fwlink/?LinkId=260883 for more information. 

Tôi đang sử dụng EF 6. Bất kỳ ý tưởng nào có thể là lý do? Tôi kiểm tra lại với cơ sở dữ liệu và cập nhật của nó và đồng bộ với EF dll.

Cập nhật: Tôi nhận được lỗi này khi tôi đang cố gắng để nhanh chóng đối tượng Context

mEntities context = new Entities(); 

Cảm ơn

+0

bạn đang cố gắng tạo ra bối cảnh ở đâu? – Zippy

+0

Trong trang web MVC4 của tôi. Tôi có một hội đồng EF.DLL trong đó có tất cả các hiện vật liên quan đến EntityFramework bao gồm cả lớp DbContext và tôi đang tham khảo hội đồng này trong ứng dụng web MVC4 của tôi. – user2243747

+0

bạn có thể thêm khai báo ngữ cảnh của mình và gọi đến nó từ Global.asax không? – Zippy

Trả lời

-1

May vấn đề của bạn là bởi vì bạn có một lớp như mẫu này trong bạn Dal

public class EfConfiguration : DbConfiguration 

Trong trường hợp này, bạn phải khởi tạo điều này trước khi sử dụng Ngữ cảnh EF trong Global.asax

Rgds

+5

ý của bạn là gì - "khởi tạo điều này"? Các ví dụ luôn được chào đón ... – barrypicker

+0

Điều này có thể xảy ra vì bạn có nhiều hơn một dự án sử dụng EntityFramework, vì vậy khung thực thể có một số lớp nội bộ được khởi tạo trên toàn cầu. Bạn cần phải nói trước EntityFramework (trước khi tạo DBContext) về DbConfigurations của bạn. Trong trường hợp của tôi, tôi có 3 dự án sử dụng EF (2 MsSql, 1 Oracle). Các oracle đòi hỏi một DbConfiguration khác nhau. Bạn cần sử dụng DbConfiguration này trên OracleDbContext của bạn và thiết lập dòng sau trong khởi động ứng dụng của bạn để nói với EF: DbConfiguration.SetConfiguration (new OracleDbConfiguration()); –

+2

Lỗi có liên kết đến trang microsoft, mất một chút thời gian và đọc kỹ nó bạn sẽ tìm thấy câu trả lời. Chúc may mắn! https://msdn.microsoft.com/en-us/data/jj680699 –

0

Tôi chỉ muốn để lại giải pháp cho những người có thông báo lỗi tương tự. Như link từ Vinicius Paiva, nó giải thích rõ ràng rằng nếu bạn có nhiều dbcontex trong các dll khác nhau, bạn nên tham chiếu đến tệp DbConfiguration nếu bạn đã tạo một tệp trong mã của mình. trong trường hợp của tôi, tôi đã có dự án hàm azure tham chiếu đến dự án DAL và cách duy nhất để có được dự án hàm Azure là tạo ra tệp DbConfiguration dựa trên lớp và mã.

Vì vậy, mở rộng tập tin edmx DbContext tôi với mã dưới đây

namespace myApp.Data.Models 
{ 
    [DbConfigurationType(typeof(myDBContextConfig))] 
    partial class myDBEntities 
    { 

     public myDBEntities(string connectionString) : base(connectionString) 
     { 
     } 
    } 

     public class myDBContextConfig : DbConfiguration 
     { 
      public myDBContextConfig() 
      { 
       SetProviderServices("System.Data.EntityClient", 
       SqlProviderServices.Instance); 
       SetDefaultConnectionFactory(new SqlConnectionFactory()); 
      } 
     } 
    } 

thư viện Dal này được tham khảo trên một dự án MVC nơi chúng tôi đã có một ví dụ edmx. Vì vậy, khi tôi chạy trên dự án này, nó đã ném ngoại lệ này. Để khắc phục điều này. bạn cần phải mở rộng hoặc thêm nút entityFramework như dưới đây trong tệp cấu hình của bạn (web.config trong trường hợp này)

<entityFramework codeConfigurationType="myApp.Data.Models.myDBContextConfig , myApp.Data"> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="mssqllocaldb" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
Các vấn đề liên quan