gpt4 book ai didi

asp.net - 不能将 Asp.net core 2.0 与 Entity Framework 6 一起使用

转载 作者:行者123 更新时间:2023-12-01 03:18:11 25 4
gpt4 key购买 nike

我关注链接 https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6去做这个。
但是当我运行prọect时,它发生错误

ConfigurationErrorsException: Configuration system failed to initialize System.Configuration.ClientConfigurationSystem.EnsureInit(string configKey) System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(string sectionName) System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(string sectionName) System.Configuration.ConfigurationManager.GetSection(string sectionName) System.Configuration.ConfigurationManager.get_ConnectionStrings() System.Data.Entity.Internal.AppConfig..ctor() System.Data.Entity.Internal.AppConfig..cctor()



原始异常详细信息

TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. System.Data.Entity.Internal.LazyInternalConnection..ctor(DbContext context, string nameOrConnectionString) System.Data.Entity.DbContext..ctor(string nameOrConnectionString) Repositories.EF6.Context.MyDbContext..ctor() Repositories.EF6.Implements.FakeLinkRepository..ctor() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCreateInstance(CreateInstanceCallSite createInstanceCallSite, ServiceProvider provider) ....



我已经将 Entity Framework 划分为一个单独的项目,任何人都可以解决它

这是我的代码
在 .net 框架 4.6.1 上运行的 EF6 项目
    [DbConfigurationType(typeof(MySqlEFConfiguration))] 
public class MyDbContext : DbContext
{

public MyDbContext():base(GlobalVariables.ConnectionString == null ? "name=defaultConnectionString" : GlobalVariables.ConnectionString)
{

}
public MyDbContext(string connectionString):base(connectionString)
{

}
.......

}

public class MyDbConfiguration : MySqlEFConfiguration
{
public MyDbConfiguration()
{
SetProviderServices("MySql.Data.MySqlClient", new MySqlProviderServices());
SetDefaultConnectionFactory(new MySqlConnectionFactory());
}
}

我的仓库
public class MyRepository : Repository
{
MyDbContext _context;
public MyRepository ()
{
_context = new MyDbContext();
}
.....
}

在asp.net核心2.0中
GlobalVariables.ConnectionString 获取 appSetting.json 上 connectionString 的值,MyDbContext 由 DI create MyRepository 创建

标准类 2.0 上的静态类 GlobalVariables

当我再次运行我的项目 asp.net core 2.0 时,这是错误

ConfigurationErrorsException:无法识别的配置部分 system.data。

文件配置是:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="defaultConnectionString" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;user id=root;password=admin;database=té;persistsecurityinfo=True" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.10.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.10.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>

更新,我发现问题了,可能.net core 2.0不支持system.Data.Common。我在 nuget 上找到了,但只在 .net 标准 1.2 中找到了这个库支持。
我认为不能将 Entity Framework 6 与 asp.net core 2.0 一起使用,等待下一次更新。

最佳答案

You can't put an EF6 context in an ASP.NET Core project because .NET Core projects don't support all of the functionality that EF6 commands such as Enable-Migrations require.



您是否将 EF6 放在单独的 .net 4.6 项目中?
或尝试使用 EF Core 代替? https://docs.microsoft.com/en-us/ef/core/

关于asp.net - 不能将 Asp.net core 2.0 与 Entity Framework 6 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47628333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com