实体框架6与DNX的连接字符串

Mar*_*ijn 1 entity-framework connection-string dnx

据我了解实体框架6,它神奇地实现了app.config/web.config中的连接字符串.从DbContext文档,部分备注:

如果从派生上下文调用无参数DbContext构造函数,则派生上下文的名称用于在app.config或web.config文件中查找连接字符串

对于无参数构造函数的情况,或者对于具有连接字符串名称的情况:

也可以通过将名称传递给采用字符串的DbContext构造函数之一来显式指定连接/数据库名称,而不是使用派生的上下文名称.该名称也可以以"name = myname"的形式传递,在这种情况下,必须在配置文件中找到该名称,否则将抛出异常.

但是,在DNX项目中,我没有app.config或web.config.如何在DNX项目中的Entity Framework 6中指定连接?

pg0*_*0xC 5

至少对于代码优先方法,不需要app.config或web.config.连接字符串可以在任何配置文件中定义,甚至可以在没有它的情况下定义 - 硬编码(这不是一个好习惯).

在带有EF6的ASP.NET 5中,可以像往常一样在config.json文件中指定连接字符串.这当然假设从@Martijn注意到从json文件加载配置:

将两个包添加到project.json:

"dependencies": {
  "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8",
  "Microsoft.Framework.Configuration.Json": "1.0.0-beta8"
}
Run Code Online (Sandbox Code Playgroud)

将config.json添加到您的项目:

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Data Source=(local);Database=EfExample;Integrated Security=True"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在Program.cs中加载配置(此类在beta8之后可能无效):

[...CODE ...]
using Microsoft.Framework.Configuration;

[...CODE ...]

public class Program
{
    public void Main(string[] args)
    {
     var builder = new ConfigurationBuilder()
            .SetBasePath(".")
            .AddJsonFile("config.json");
[... CODE ...]
Run Code Online (Sandbox Code Playgroud)

现在可以使用创建DbContext

 new ApplicationDbContext(Configuration["Data:DefaultConnection:ConnectionString"])
Run Code Online (Sandbox Code Playgroud)

假设你已经有构造函数ApplicationDbContext这样

    public ApplicationDbContext(string nameOrConnectionString)
        : base(nameOrConnectionString)
    {
    }
Run Code Online (Sandbox Code Playgroud)

如果您想了解有关DNX中配置的更多信息,我可以在以下网址发布博客文章:http://bleedingnedge.com/2015/10/15/configuration-providers/

有关ASP.NET 5和EF6的不同配置问题的其他信息可以在这里找到(主要集中在MVC项目),包括mssql,localdb,postgresql的配置以及避免其他app.config问题:http://bleedingnedge.com/2015 / 11/01 /实体框架-6-与-ASP-净-5 /