Đâ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 ...
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 ...
... 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.
Chạy với cùng một vấn đề atm – grmbl
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
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. –