我对NuGet比较陌生。我计划在我的项目中仅使用sqlite数据库。使用NuGet数据包管理器,我看到有几个与Microsoft.EntityFrameworkCore
相关的软件包。
如果仅使用sqlite,Microsoft.EntityFrameworkCore.Sqlite
软件包就足够了吗?或者安装Microsoft.EntityFrameworkCore
软件包也很重要吗?
我有点困惑,什么时候应该安装Microsoft.EntityFrameworkCore
而不是Microsoft.EntityFrameworkCore.Sqlite
,反之亦然?
答案 0 :(得分:1)
如果您通过 PackageReference 引用软件包,则也会自动获得其所有依赖项。
Microsoft.EntityFrameworkCore.Sqlite 3.0.0(针对 .NETStandard 2.1 )取决于Microsoft.EntityFrameworkCore.Sqlite.Core 3.0.0,取决于Microsoft.EntityFrameworkCore.Relational 3.0.0,最终取决于Microsoft.EntityFrameworkCore 3.0.0(现在取决于进一步取决于其他软件包。
所以 PackageReference 是
<Project>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.0" />
</ItemGroup>
</Project>
不仅使您的项目获得顶层软件包,而且还获得所有传递性依赖关系作为依赖关系图-如果返回的那些项目的 PackageReferences 没有标有PrivateAssets
来防止流向父项目的流程,如docs中所述。
您可以通过 Visual Studio 的 Solution Explorer 查看项目使用的所有程序集:
或通过 .NET Core CLI 键入:
dotnet list package --include-transitive
Project 'Project' has the following package references
[netcoreapp3.0]:
Top-level Package Requested Resolved
> Microsoft.EntityFrameworkCore.Sqlite 3.0.0 3.0.0
Transitive Package Resolved
> Microsoft.Data.Sqlite.Core 3.0.0
> Microsoft.DotNet.PlatformAbstractions 3.0.0
> Microsoft.EntityFrameworkCore 3.0.0
> Microsoft.EntityFrameworkCore.Abstractions 3.0.0
> Microsoft.EntityFrameworkCore.Analyzers 3.0.0
> Microsoft.EntityFrameworkCore.Relational 3.0.0
> Microsoft.EntityFrameworkCore.Sqlite.Core 3.0.0
> Microsoft.Extensions.Caching.Abstractions 3.0.0
> Microsoft.Extensions.Caching.Memory 3.0.0
> Microsoft.Extensions.Configuration 3.0.0
> Microsoft.Extensions.Configuration.Abstractions 3.0.0
> Microsoft.Extensions.Configuration.Binder 3.0.0
> Microsoft.Extensions.DependencyInjection 3.0.0
> Microsoft.Extensions.DependencyInjection.Abstractions 3.0.0
> Microsoft.Extensions.DependencyModel 3.0.0
> Microsoft.Extensions.Logging 3.0.0
> Microsoft.Extensions.Logging.Abstractions 3.0.0
> Microsoft.Extensions.Options 3.0.0
> Microsoft.Extensions.Primitives 3.0.0
> SQLitePCLRaw.bundle_e_sqlite3 2.0.0
> SQLitePCLRaw.core 2.0.0
> SQLitePCLRaw.lib.e_sqlite3 2.0.0
> SQLitePCLRaw.provider.dynamic_cdecl 2.0.0
> System.Collections.Immutable 1.6.0
> System.ComponentModel.Annotations 4.6.0
> System.Diagnostics.DiagnosticSource 4.6.0
> System.Memory 4.5.3
> System.Text.Json 4.6.0
> System.Threading.Tasks.Extensions 4.5.2
要回答第二个问题:您可能只想为数据库提供程序不可知类库安装Microsoft.EntityFrameworkCore
,提供常规的 Entity Framework Core 功能。