使用 dotnet core 时,硬编码的 EF6 连接字符串名称。

3
我们有一个现有的.NET Framework库,使用Entity Framework 6和像这样的静态方法:
public class OrderManager
{
    public static OrderDTO GetOrderByOrderId(int oid)
    {
        var entities = new MyEntities();
        ....
    }
}

在这里,MyEntities有一个硬编码的连接字符串名称。

internal partial class MyEntities : DbContext
{
    public SSE3Entities() : base("name=MyEntities")   {}
}

使用ASP.NET应用程序时,web.config文件中可能定义了如下格式的连接字符串:。
<connectionStrings>
   <add name="MyEntities" connectionString="metadata=res://*/M..." providerName="System.Data.EntityClient" />
</connectionStrings>

但是我如何在aspnet core应用程序中重用这个库呢?尝试过:

{
  "ConnectionStrings": {
    "MyEnties": "metadata=res://*/M...",
  }, 
  "Logging": {
     ...
  }
}

我知道将连接字符串传递到OrderManager构造函数中是我们多年前就应该做的事情,但现在更改它需要大量的工作。

有没有办法让EF读取新的配置系统?

或者我们可以将一些设置写入旧的ConfigurationManager中吗?

我尝试了放置一个web.config文件,但没有成功。


将你的应用程序转换为使用新的 DI 系统确实需要这么多工作吗? - DavidG
@DavidG 这个库被我们的主应用程序使用,其中包含大约50个“OrderManagers”,这些管理器彼此引用,因此重写会至少产生很多更改。我希望在新的dotnet core webapi中重用该库而无需进行任何更改,然后逐步迁移功能,并最终删除旧库。 - Larsi
2
我仍然建议花时间清除旧的技术债务。你迟早都得这么做,所以最好现在把它处理掉,然后再在其基础上构建其他代码。 - DavidG
@DavidG 谢谢,我会遵循那个建议。 - Larsi
@ArunPratap 不要使用“内联代码”来突出显示随机术语。 - CodeCaster
2个回答

0

从NuGet添加System.Configuration.ConfigurationManager

添加一个名为app.config的文件

.Net Core应用程序是控制台应用程序,因此它首先查找app.config

app.config:

<appSettings>
    <add key="webpages:Version" value="2.0.0.0"/>
</appSettings>

0
这个解决方案适用于ASPNET Core MVC 2.0、2.2和3.0。在您的应用程序根目录中找到appsetting.json文件并修改连接字符串即可。
 {
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=DESKTOP-3R4MR9H\\SQLSERVER3R4MR9;Initial 
     Catalog=ASPNetCoreMVC;Persist Security Info=True;User 
     ID=sa;Password=********;"
  },
  "Logging": {
    "LogLevel": {
       "Default": "Warning"
     }
  },
  "AllowedHosts": "*"
}

Work Around[1]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接