c# - Linux 上的 C# DotNet Entity Framework Core Migrations 错误
问题描述
我在 Linux 上使用 JetBrains Rider。每当我运行时dotnet ef migrations add InitialCreate
,它都会在终端中执行此操作并给我这个错误:
Build started...
Build succeeded.
Xlib: extension "NV-GLX" missing on display ":0.0".
Xlib: extension "NV-GLX" missing on display ":0.0".
0104:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
System.PlatformNotSupportedException: Cannot find 'Mono.SystemDependencyProvider, System' dependency
at Mono.DependencyInjector.get_SystemProvider () [0x0003d] in <a9da539eb2f94b1a84ab84db52450d46>:0
at System.Security.Cryptography.X509Certificates.X509Helper.get_CertificateProvider () [0x00000] in <a9da539eb2f94b1a84ab84db52450d46>:0
at System.Security.Cryptography.X509Certificates.X509Helper.Import (System.Byte[] rawData, Microsoft.Win32.SafeHandles.SafePasswordHandle password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags)
[0x00000] in <a9da539eb2f94b1a84ab84db52450d46>:0
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor (System.String fileName, System.String password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags) [0x0003e] in <a9da539eb2f94
b1a84ab84db52450d46>:0
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor (System.String fileName) [0x00000] in <a9da539eb2f94b1a84ab84db52450d46>:0
at System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromSignedFile (System.String filename) [0x00000] in <a9da539eb2f94b1a84ab84db52450d46>:0
at System.Security.Policy.Evidence.GetDefaultHostEvidence (System.Reflection.Assembly a) [0x00097] in <a9da539eb2f94b1a84ab84db52450d46>:0
at System.AppDomain.get_Evidence () [0x00045] in <a9da539eb2f94b1a84ab84db52450d46>:0
at (wrapper remoting-invoke-with-check) System.AppDomain.get_Evidence()
at System.AppDomain.CreateDomain (System.String friendlyName, System.Security.Policy.Evidence securityInfo, System.AppDomainSetup info) [0x000de] in <a9da539eb2f94b1a84ab84db52450d46>:0
at Microsoft.EntityFrameworkCore.Tools.AppDomainOperationExecutor..ctor (System.String assembly, System.String startupAssembly, System.String projectDir, System.String dataDirectory, System.String rootNamespace, System.String lang
uage, System.String[] remainingArguments) [0x0004c] in <27660142d7fa4f02b91c8d5e3bfbdb6d>:0
at Microsoft.EntityFrameworkCore.Tools.Commands.ProjectCommandBase.CreateExecutor (System.String[] remainingArguments) [0x00042] in <27660142d7fa4f02b91c8d5e3bfbdb6d>:0
at Microsoft.EntityFrameworkCore.Tools.Commands.MigrationsAddCommand.Execute (System.String[] args) [0x00000] in <27660142d7fa4f02b91c8d5e3bfbdb6d>:0
at Microsoft.EntityFrameworkCore.Tools.Commands.CommandBase+<>c__DisplayClass0_0.<Configure>b__0 (System.String[] args) [0x0003b] in <27660142d7fa4f02b91c8d5e3bfbdb6d>:0
at Microsoft.DotNet.Cli.CommandLine.CommandLineApplication.Execute (System.String[] args) [0x000df] in <27660142d7fa4f02b91c8d5e3bfbdb6d>:0
at Microsoft.EntityFrameworkCore.Tools.Program.Main (System.String[] args) [0x0002e] in <27660142d7fa4f02b91c8d5e3bfbdb6d>:0
Cannot find 'Mono.SystemDependencyProvider, System' dependency
如果有人知道答案,谢谢!
解决方案
我在 .net 5 web API 项目中遇到了同样的问题
EF 工具查看 CreateWebHostBuilder 方法并在找不到它时返回错误。
directories:
/src
|-- /YourPorject.Infrastructure
|-- /YourPorject.API
public static IHostBuilder CreateWebHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
config.AddJsonFile(
context.HostingEnvironment.ContentRootPath + $"/Config/appsettings-dev.json",
false, false);
})
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
使用 bash 创建和更新数据库
cd src/
dotnet ef migrations add Init
--project YourPorject.Infrastructure/YourPorject.Infrastructure.csproj
--startup-project YourPorject.API/YourPorject.API.csproj
-o ./Repositories/Migrations/
cd src/
dotnet ef database update
--project YourPorject.Infrastructure/YourPorject.Infrastructure.csproj
--startup-project YourPorject.API/YourPorject.API.csproj
使用这个包(这很重要)
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.8" />
</ItemGroup>
推荐阅读
- java - 我需要以编程方式将我的 APP 中的借记卡添加到 Google 支付
- c++ - 嵌套模板函数的重载
- postgresql - 如何在postgres中每N行打印列标题?
- python - 使用 self.pack 和 self.grid 可以在没有类的情况下使用,但使用它们会失败
- docker - Nginx 和 Flask 是否应该在同一个容器中运行
- angular - 即使未选择单选按钮,Angular Reactive 也会验证
- kotlin - Kotlin - 嵌套函数与具有 1 个调用点的私有函数
- android - Gradle 同步失败:删除了对使用早于 2.6 的 Gradle 版本的构建的支持 [...]。您当前使用的是 Gradle 版本 2.2.1
- django - 将 SQL 查询转换为制作精良的 QuerySet
- flutter - 颤振发出经过身份验证的 api 请求