从dotnet核心使用的硬编码EF6 Connectionstring名称

时间:2017-03-01 10:03:09

标签: entity-framework asp.net-core entity-framework-6 .net-core asp.net-core-webapi

我们有一个现有的带有EF6的.net框架库和静态方法,如下所示:

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核心应用程序中重用此库。尝试:

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

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

我们有什么方法可以让EF读取新的配置系统?

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

编辑:尝试在没有运气的情况下放入web.config

感谢您的任何想法

Larsi

2 个答案:

答案 0 :(得分:0)

从nuget

添加System.Configuration.ConfigurationManager

添加文件app.config

.net核心应用程序是一个应用程序应用程序,因此它首先找到app.config

的app.config:

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

答案 1 :(得分:0)

此解决方案适用于ASPNET Core MVC 2.0、2.2和3.0。在您的应用程序根目录中,找到appsetting.json文件并修改连接字符串。

$flat_array = [];
foreach($multi_dimension_array as $k => $array){
    foreach($array as $value){
        $flat_array[] = array(
            $k => $value
        );
    }
}
usort($flat_array,function($a,$b){return current($a)["position"] - current($b)["position"];});

print_r($flat_array);

[Work Around[1]