2013-09-28 217 views
36

Tôi có một giải pháp - một dự án là thư viện lớp với mô hình dữ liệu .edmx Dự án còn lại là dự án biểu mẫu web asp.net.Loại 'System.Data.Entity.DbContext' được định nghĩa trong một assembly không được tham chiếu. Bạn phải thêm tham chiếu vào assembly 'EntityFramework 2

khi tôi bắt đầu giải pháp tôi có được ngoại lệ sau đây:

Loại 'System.Data.Entity.DbContext' được định nghĩa trong một hội đồng đó không được tham chiếu. Bạn phải thêm tham chiếu vào assembly 'EntityFramework, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'.

và khi tôi xem các tham chiếu trong dự án asp.net của tôi, tôi thấy tham chiếu đến lớp của mình và tôi không thể thấy tham chiếu đến khung thực thể. Nhưng vấn đề là khuôn khổ thực thể được cài đặt cả trong thư viện lớp học của tôi và dự án web

+0

* Tôi không thể thấy tham chiếu đến khung thực thể. Nhưng vấn đề là khung thực thể được cài đặt ... trong dự án web của tôi * Hủy bỏ gói NuGet và thêm lại nó. –

Trả lời

44

Tôi nghĩ rằng phiên bản EntityFramework bạn đã nhầm lẫn

hãy tải về phiên bản chính xác bằng cách sử dụng trình cài đặt NuGet gói.

Xem thảo luận này cho việc bắt đầu: The type or namespace name 'DbContext' could not be found

Và nhìn vấn đề này cùng và trả lời: là Here

+2

Cảm ơn, điều đó giúp tôi. Lý do là: 'entityframework.dll' của tôi được khai báo trong tệp' packages.config' của tôi là '5.0.0' và phiên bản này không có kiểu' DbContext', bây giờ tôi đã cập nhật phiên bản (với nuget của tôi) vào phiên bản '6.0.0' và bây giờ nó hoạt động. – MrMins

6

Tôi đề nghị bạn kiểm tra:

Allow NuGet to download missing packages during build đánh dấu vui lòng tham khảo này link

+0

Phiên bản mới nhất của NuGet có tính năng này theo mặc định. Ngoài ra, tôi gặp vấn đề với @Maris gọi đây là "giải pháp thay thế". Đó là một phần của quá trình sử dụng NuGet nếu bạn muốn tránh kiểm tra các gói trong SCM của bạn. –

11

Tôi thấy giải pháp này phù hợp với tôi.

Thêm Entity Framework DLL tham khảo: -

  1. Đến c: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NETMVC 4 \ Packages \ EntityFramework 5.0.0-rc \ lib \ net45

  2. Thêm Entity framework DLL

+1

Tôi cũng phải thêm 'EntityFramework.SqlServer' từ cùng một vị trí, trong trường hợp của tôi là MVC5 thay vì MVC4. – toddmo

1

tôi đã cùng một vấn đề và cuối cùng tôi giải quyết nó. những gì bạn cần làm là gỡ cài đặt mọi phiên bản của khung thực thể trên máy của bạn. Nếu bạn đã cài đặt nó bằng cách sử dụng các tập tin cài đặt, bạn phải loại bỏ nó từ thêm/gỡ bỏ các chương trình và nếu bạn đã cài đặt nó bằng cách sử dụng các gói nugget, bạn phải gỡ bỏ cài đặt nó từ đó.

Sau đó, bạn cài đặt lại bằng gói nugget và khởi động lại studio trực quan của mình. Điều này giải quyết được vấn đề của tôi.

+0

Điều này đã lưu tôi. Chỉ cần làm rõ mặc dù, tôi chỉ cần loại bỏ tất cả các trường hợp khỏi dự án của tôi. Trong kịch bản của tôi, tôi đã cố gắng chuyển từ .net sang .net lõi và giải pháp này làm việc cho tôi. –

0

Tôi gặp vấn đề này khi tôi kéo một dự án từ SVN sang một máy tính mới. Cài đặt Entity Framework thông qua NuGet đã giải quyết được vấn đề. Tôi đã cài đặt phiên bản mới nhất hiện tại là 6.1.1

+0

Tôi đã làm điều này và tôi vẫn gặp sự cố –

+0

Nếu bạn có nhiều hơn một dự án, bạn đã cài đặt gói nuget trên tất cả các dự án cần nó chưa? Ngoài ra, bạn đã kiểm tra lại đường dẫn dll trong tham chiếu khung thực thể để đảm bảo nó đúng? – Bruno

0

Tôi đã có phiên bản đúng của khuôn khổ pháp nhân DLL và không có câu trả lời nào khác ở đây làm việc cho tôi: Tôi phải chọn tham chiếu EntityFramework trong dự án, sau đó trong các thuộc tính, đặt "Phiên bản cụ thể" thành true.

2

Nếu ai đó có nhiều dự án, bạn cần phải cài đặt nó cho các dự án yêu cầu.Ngoài ra những gì đã giúp tôi thay đổi dự án mặc định và sau đó cài đặt thông qua giao diện quản lý gói và giải quyết nó.

0

Thông báo lỗi cho bạn biết rằng thư viện lớp với mô hình dữ liệu .edmx đã tải khung Entity 5 ... (rõ ràng là do không có thông báo lỗi trong .edmx) ... và dự án web của bạn đang tham chiếu thư viện lớp ... vì vậy nó có quyền truy cập vào mọi thứ trong thư viện lớp ... nhưng nó không thể xử lý các kiểu dữ liệu trong thư viện lớp vì dự án web của bạn cần tham chiếu đến khung thực thể 5. Bạn cũng sẽ nhận thấy rằng intelliSense của bạn không hoạt động cho các đối tượng trong thư viện lớp của bạn.

Chỉ cần thêm tham chiếu trong dự án web của bạn vào khung thực thể 5 ... và tất cả các thiết lập của bạn.

0

Thêm tham chiếu chính xác vào tệp * .csproj. trong cas của tôi tôi đã thêm vào dưới đây trong tập tin * .csproj và giải quyết vấn đề.

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> 
     <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
    <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> 
     <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath> 
     <Private>True</Private> 
    </Reference> 
0

Làm điều này, nó sẽ giải quyết vấn đề này vì nó có vẻ như bạn chưa cài đặt Entity Framework đúng hoặc nó không hoạt động đúng, Tới CÔNG CỤ> Thư viện Package Manager> Package Manager Console trong VS2012 và gõ install-package EntityFramework