提问者:小点点

是否有可能摆脱app.config depedency?


我们将一个。NET Framework4.5项目升级到。NET Framework4.8,在我们的app.config文件中出现了一些新的内容。

下面的代码(来自app.config)是否是MySQL和EntityFramework等正常工作所必需的?

还有,是否有可能以编程方式完成与下面代码相同的事情,这样我们就可以摆脱app.config依赖关系?

我们试图删除下面的代码,但这导致我们的服务无法启动。

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    </providers>
  </entityFramework>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
  </startup>
  <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" />
    </DbProviderFactories>
  </system.data>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=<PUBLICKEY>" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=<PUBLICKEY>" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>


共1个答案

匿名用户

Microsoft文档中有一个特定的指南,说明从EF6开始就可以这样做。 检查此处

具体步骤如下:

  1. 只为应用程序创建一个DbConfiguration类。 此类指定应用程序域范围的设置。
  2. 将DbConfiguration类与DbContext类放在同一个程序集中。 (如果要更改此内容,请参阅“移动DbConfiguration”部分。)
  3. 为DbConfiguration类提供一个公共的无参数构造函数。
  4. 通过在此构造函数中调用受保护的DbConfiguration方法来设置配置选项。

示例:

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContextContext : DbContext
{
}

这已经包括了:

如果删除自动添加的supportedRuntime元素会发生什么?