是否有可能摆脱app.config的依赖?

时间:2020-06-28 08:37:50

标签: c# mysql entity-framework app-config

我们将.Net Framework 4.5项目升级到.Net Framework 4.8,并且在app.config-file中显示了一些新内容。

下面的代码(来自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 个答案:

答案 0 :(得分:2)

对于EntityFramework

Microsoft文档上有一个专门的指南,指出可以从EF6开始进行。选中here

有效的步骤如下:

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

示例:

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

对于受支持的运行时

此问题已涵盖:

What happens if I remove the auto added supportedRuntime element?