5

Đây là lần đầu tiên tôi thử nghiệm với EF Core, ASP Net Core và thư viện lớp di động với VS2015. Công bằng để nói rằng tôi đang nhận được thất vọng.Cố gắng cài đặt EF Core với mục tiêu thư viện lớp di động .Net 4.6.1

Tôi muốn tạo thư viện nơi tôi có thể cài đặt EntityFramework.Core. Thư viện này cần phải được sử dụng trong một ứng dụng WPF và một ứng dụng Web ASP NET Core - bỏ qua bất kỳ khái niệm ứng dụng lớp tốt cho bây giờ. Suy nghĩ của tôi là tạo một thư viện lớp di động.

Sử dụng mẫu dự án mà tôi nhắm mục tiêu NET 4.6 và ASP Net Core ...

Targets

tôi nhận được một dự án với một lớp và một tập tin project.json như sau:

{ 
    "supports": { 
     "net46.app": {}, 
     "dnxcore50.app": {} 
    }, 
    "dependencies": { 
     "Microsoft.NETCore": "5.0.0", 
     "Microsoft.NETCore.Portable.Compatibility": "1.0.0" 
    }, 
    "frameworks": { 
     "dotnet": { 
      "imports": "portable-net452" 
     } 
    } 
} 

Bây giờ khi tôi cài đặt EntityFramework.Core gói từ NuGet ...

Install EF Core Nuget

... Tôi nhận được đầu ra sau đây:

Restoring packages for 'Acme.PCLEFClassLib'. 
Restoring packages for K:\TFS\TestApps\Projects\DotNetCore\Acme.PCL1\Acme.PCL1\project.json... 
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10) 
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.Logging.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10) 
Version conflict detected for System.Collections. 
Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Collections (>= 4.0.11-beta-23516) 
Acme.PCLEFClassLib (>= 1.0.0) -> Microsoft.NETCore.Portable.Compatibility (>= 1.0.0) -> Microsoft.NETCore.Runtime (>= 1.0.0) -> Microsoft.NETCore.Runtime.CoreCLR-x86 (>= 1.0.0) -> System.Collections (= 4.0.10). 
EntityFramework.Core 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0. 
Some packages are not compatible with .NETPlatform,Version=v5.0. 
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0. 
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0. 
Some packages are not compatible with DNXCore,Version=v5.0. 
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x86). 
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x86). 
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x86). 
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x64). 
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x64). 
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x64). 
Package restore failed for 'Acme.PCLEFClassLib'. 
Package restore failed. Rolling back package changes for 'Acme.PCLEFClassLib'. 
========== Finished ========== 

là nó thực sự có thể cài đặt EF cốt lõi trong một xách tay Class Library? Nếu vậy thì làm thế nào - tôi cần làm gì với dự án?

Tôi chỉ cảm thấy mình đang đi vòng quanh trong vòng kết nối tìm kiếm các giải pháp trên tuyến.

CẬP NHẬT 1

Cố gắng cài đặt EntityFramework.MicrosoftSqlServer trong PCL của tôi.

Cho rằng EntityFramework.MicrosoftSqlServer được cài đặt khi tạo một dự án ASP Net Core chuẩn - sử dụng khung công tác dnxcore50. Làm thế nào đến nếu tôi làm tương tự trong PCL, phàn nàn rằng:

EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0. 

Nếu trường hợp đó xảy ra thì nó sẽ được cài đặt như thế nào trong dự án ASP NET Core.

CẬP NHẬT 2

Tôi tạo ra một PCL mới nhắm mục tiêu NET 4.5.1. Sau đó tôi đã cài đặt EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final vào đó thông qua Nuget, và nó không cài đặt vấn đề gì cả. Mặc dù tôi không thể lặp lại điều này ngay bây giờ. Tôi vừa tạo một giải pháp riêng với dự án Thư viện PCL nhắm mục tiêu ASP .NET Core và .NET 4.5.1. Điều này cho ra kết quả như sau:

Attempting to gather dependency information for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with respect to project 'AnotherPCLEFFUP', targeting '.NETPortable,Version=v4.5,Profile=Profile75' 
Attempting to resolve dependencies for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with DependencyBehavior 'Lowest' 
Resolving actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' 
Resolved actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' 
Install failed. Rolling back... 
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in project 'AnotherPCLEFFUP' 
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in folder 'K:\TFS\TestApps\Projects\DotNetCore\AnotherPCLEFFUP\packages' 
Invalid portable frameworks. 

Cùng xảy ra khi cài đặt EntityFramework.Core.7.0.0-rc1-final.

Công bằng để nói, điều này hoàn toàn bực bội. Có lẽ tôi đang sủa cây sai hoặc chỉ sủa điên ngày hôm nay.

+0

Chạy với cùng một vấn đề atm – grmbl

+1

Xin chào, đây là một vấn đề mở trên GitHub: https://github.com/aspnet/EntityFramework/issues/5176 (vi phạm phụ thuộc) – grmbl

+1

Tất cả những gì tôi có thể nói là điều này là vô trách nhiệm của các đội. Nó chỉ đơn giản là không thể chấp nhận để có một * RC * mà thậm chí không cài đặt một cách chính xác và thậm chí sau đó có vô số các vấn đề, và theo nghĩa đen đã không được cập nhật trong 5 tháng! Điều có trách nhiệm sẽ ít nhất là có một lộ trình * thực tế * về những gì cần làm trong khi đó, nếu không, THEY NÊN K PU NÀY RCs từ Nuget. Tuần trước tôi đã cài đặt EFCore trên phiên bản .NET 4.6 thông thường và có rất nhiều vấn đề lớn khi cài đặt (và sau khi giải quyết vô lý) và sau đó chạy nó, chỉ để tìm những lỗi * được * sửa trong phiên bản rc2 của tôi. –

Trả lời

2

Tôi không biết điều này sẽ hoạt động như thế nào đối với lớp Portable của bạn, nhưng đối với .NET thông thường (4.6 hoặc v.v), tôi đã phát hiện ra những điều sau đây.(Xem rant dưới đây)

Vì vậy, tôi không biết nếu điều này là 'kosher' hay không, nhưng nguồn này hoạt động ngay bây giờ:

Thêm nguồn gói NuGet (Options - Nguồn trọn gói - Thêm (cộng)

Nếu bạn đang cài đặt cho SQLServer, chỉ cần cài đặt này:

Microsoft.EntityFrameworkCore.SqlServer

Hoặc chọn khác phụ thuộc cấp cao nhất sẽ nhận tất cả những người khác cần thiết.

* [bắt đầu-rant] Điều đó chỉ bằng cách khám phá xung quanh các cuộc thảo luận về github EF. Nó là hoàn toàn không thể tha thứ mà họ không có một mô tả thực tế giải thích phải làm gì ngay bây giờ. Họ nên kéo phiên bản "RC" 1, với tất cả các lỗi của nó và với thiết kế hoàn toàn khác với những gì họ đang làm bây giờ và chưa được cập nhật trong hơn 5 tháng (và đây là -Xin lỗi 'đánh dấu kiểm tra!), hoàn toàn từ nuget.

Hãy để tôi thêm: Tôi yêu tất cả những gì các chàng trai đang làm, tôi yêu các bit mới, rất nhiều thứ thực sự tốt. Nhưng chúng ta không nên để treo trong nửa năm với giả thiết và vẫn là được đánh dấu là bản phát hành "RC" khi có đầy đủ các lỗi đã được khắc phục trong phiên bản rc2 được thiết kế lại hoàn toàn mà chúng chưa được công bố. [/ end-rant] *

+0

Tôi không thể theo dõi được ... EntityFramework.MicrosoftSqlServer giờ đây là Microsoft.EntityFrameworkCore.SqlServer ... Và đây là myget.org. Tôi chỉ thích những thứ để làm việc. Ngoài cái hộp. Tôi không muốn có một chiếc xe hơi và tôi cần phải nối dây điện. Hy vọng rằng Microsoft sẽ làm cho nó được sắp xếp. Tốt rant btw – Andez

+0

Tôi thiết lập một nguồn gói mới, sau đó tạo một dự án PCL mới. Nó sẽ không thêm Microsoft.EntityFrameworkCore.SqlServer vào nó. Rất nhiều gói không tương thích ở đó. EF Core từ cài đặt nuget trong thư viện lớp chuẩn. Nhưng tôi muốn thêm "thư viện lớp" của tôi vào một dự án cốt lõi aspnet - Tôi đã có vấn đề tham khảo một thư viện lớp trong dự án cốt lõi aspnet tin hay không. Vì vậy, tôi đã đi xuống con đường này. – Andez

0

Bạn đã cố gắng thay đổi khung nhập khẩu để:

"frameworks": { 
    "netcoreapp1.0": { 
    "imports": "portable-net451+win8" 
    } 
} 
0

tôi tạo một dự án Lớp Thư viện trung tâm 4.6 và sử dụng mã này trong project.json

{ 
     "dependencies": { 
     "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final", 
     "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final", 
     "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview1-final", 
     "Microsoft.NETCore.App": { 
      "version": "1.0.0-rc2-3002702", 
      "type": "platform" 
     } 
     }, 

     "tools": { 
     "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
      "version": "1.0.0-preview1-final", 
      "imports": "portable-net45+win8+dnxcore50" 
     }, 
     "Microsoft.EntityFrameworkCore.Tools": { 
      "version": "1.0.0-preview1-final", 
      "imports": [ 
      "portable-net45+win8+dnxcore50", 
      "portable-net45+win8" 
      ] 
     } 
     }, 

     "frameworks": { 
     "netcoreapp1.0": { 
      "imports": [ 
      "dotnet5.6", 
      "dnxcore50", 
      "portable-net45+win8" 
      ] 
     } 
     } 
    } 
Các vấn đề liên quan