Scaffold-DbContext - CultureNotFoundException:全球化不变模式仅支持不变区域性。par'name' en-us 无效

Zoi*_*nky 33 c# entity-framework-core

Scaffold-DbContext "connection string" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entities 
Run Code Online (Sandbox Code Playgroud)

我正在运行上面的命令,但出现以下错误,并尝试使用 .NET 7 和 8 预览版。

我什至添加<InvariantGlobalization>true</InvariantGlobalization>到项目中,但没有做任何事情。

<PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

System.Globalization.CultureNotFoundException:全球化不变模式仅支持不变区域性。有关详细信息,请参阅 https://aka.ms/GlobalizationInvariantMode 。(参数“name”)en-us 是无效的区域性标识符。在System.Globalization.CultureInfo.GetCultureInfo(字符串名称)在Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1 retry, SqlConnectionOverrides overrides) at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides) at Microsoft.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.SqlServer.Scaffolding.Internal.SqlServerDatabaseModelFactory.Create(DbConnection connection, DatabaseModelFactoryOptions options) at Microsoft.EntityFrameworkCore.SqlServer.Scaffolding.Internal.SqlServerDatabaseModelFactory.Create(String connectionString, DatabaseModelFactoryOptions options) at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, DatabaseModelFactoryOptions databaseOptions, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions) at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable1架构,IEnumerable 1 tables, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable1 schemaFilters,IEnumerable 1 tableFilters, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_01.b__0()在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作 (action)) 全球化不变模式仅支持不变区域性。有关详细信息,请参阅 https://aka.ms/GlobalizationInvariantMode。(参数 'name')en-us 是无效的区域性标识符。

Arv*_*iya 45

您必须对.csproj项目的文件进行更改,需要向in中添加InvariantGlobalization属性。falsePropertyGroup

这就是它的样子。

<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
  <ImplicitUsings>enable</ImplicitUsings>
  <InvariantGlobalization>false</InvariantGlobalization>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • 有关此问题的更多背景信息:https://github.com/dotnet/aspnetcore/issues/52319。似乎新 WebAPI 项目的 Visual Studio 模板现在默认包含此设置并将其设置为“true”。您可以安全地删除此设置,或将其设置为“false”。它并不打算包含在该项目类型中。 (2认同)