Entity framework 实体框架6与DNX的连接字符串
据我所知,EntityFramework6神奇地实现了app.config/web.config中的连接字符串。DbContext文档中的备注部分: 如果从派生上下文调用无参数DbContext构造函数,则派生上下文的名称将用于在app.config或web.config文件中查找连接字符串 对于无参数构造函数或具有连接字符串名称的情况: 除了使用派生上下文名称,还可以通过将名称传递给采用字符串的DbContext构造函数之一来显式指定连接/数据库名称。该名称还可以以“name=myname”的形式传递,在这种情况下,必须在配置文件中找到该名称,否则将引发异常Entity framework 实体框架6与DNX的连接字符串,entity-framework,connection-string,dnx,Entity Framework,Connection String,Dnx,据我所知,EntityFramework6神奇地实现了app.config/web.config中的连接字符串。DbContext文档中的备注部分: 如果从派生上下文调用无参数DbContext构造函数,则派生上下文的名称将用于在app.config或web.config文件中查找连接字符串 对于无参数构造函数或具有连接字符串名称的情况: 除了使用派生上下文名称,还可以通过将名称传递给采用字符串的DbContext构造函数之一来显式指定连接/数据库名称。该名称还可以以“name=myname”的
但是,在DNX项目中,我没有app.config或web.config。如何在DNX项目的Entity Framework 6中指定连接?至少对于代码优先的方法,不需要app.config或web.config。连接字符串可以在任何配置文件中定义,甚至可以在没有硬编码的情况下定义(这不是一个好的做法) 在ASP.NET 5和EF6中,可以像往常一样在config.json文件中指定连接字符串。当然,这假设从json文件加载配置为@Martijn: 向project.json添加两个包:
"dependencies": {
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta8"
}
将config.json添加到项目中:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Data Source=(local);Database=EfExample;Integrated Security=True"
}
}
}
在Program.cs中加载配置(该类在beta8之后可能无效):
现在可以使用创建DbContext
new ApplicationDbContext(Configuration["Data:DefaultConnection:ConnectionString"])
假设您已经有了ApplicationDbContext
的构造函数,如下所示
public ApplicationDbContext(string nameOrConnectionString)
: base(nameOrConnectionString)
{
}
如果您想了解更多关于DNX配置的信息,我在以下网站上发布了相关博客:
关于ASP.NET 5和EF6的不同配置问题的更多信息可以在这里找到(不过主要集中在MVC项目上),包括mssql、localdb、postgresql的配置,以及避免其他app.config问题:至少对于代码优先的方法,不需要app.config或web.config。连接字符串可以在任何配置文件中定义,甚至可以在没有硬编码的情况下定义(这不是一个好的做法) 在ASP.NET 5和EF6中,可以像往常一样在config.json文件中指定连接字符串。当然,这假设从json文件加载配置为@Martijn: 向project.json添加两个包:
"dependencies": {
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta8"
}
将config.json添加到项目中:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Data Source=(local);Database=EfExample;Integrated Security=True"
}
}
}
在Program.cs中加载配置(该类在beta8之后可能无效):
现在可以使用创建DbContext
new ApplicationDbContext(Configuration["Data:DefaultConnection:ConnectionString"])
假设您已经有了ApplicationDbContext
的构造函数,如下所示
public ApplicationDbContext(string nameOrConnectionString)
: base(nameOrConnectionString)
{
}
如果您想了解更多关于DNX配置的信息,我在以下网站上发布了相关博客:
关于ASP.NET 5和EF6的不同配置问题的更多信息可以在这里找到(不过主要集中在MVC项目上),包括mssql、localdb、postgresql的配置,以及避免其他app.config问题:可能重复@DavidG该问题有一定帮助,但假设类似“startup.cs”的东西这是MVC6特有的。我不是在做MVC6项目。那你在做什么?@DavidG目前是一个控制台应用程序(尽管这个问题不是专门针对任何“项目类型”,一个一般性的答案对我来说更有价值;它也可以是一个Win10通用应用程序。对每个项目类型,一般性地问一次这个问题似乎比单独问一次更有用。)这里的答案假设(至少)安装的预发行版软件包
Microsoft.Framework.ConfigurationModel
和Microsoft.Framework.ConfigurationModel.Json
(它提供IConfiguration
和Configuration
)是(我假设)ASP 5项目中隐含的。这些事情不是不可能找到的,但是一个好的答案IMO应该包括这些问题。可能重复@DavidG这个问题会有所帮助,但假设是“startup.cs”,这是MVC 6特有的。我不是在做MVC6项目。那你在做什么?@DavidG目前是一个控制台应用程序(尽管这个问题不是专门针对任何“项目类型”,一个一般性的答案对我来说更有价值;它也可以是一个Win10通用应用程序。对每个项目类型,一般性地问一次这个问题似乎比单独问一次更有用。)这里的答案假设(至少)安装的预发行版软件包Microsoft.Framework.ConfigurationModel
和Microsoft.Framework.ConfigurationModel.Json
(它提供IConfiguration
和Configuration
)是(我假设)ASP 5项目中隐含的。这些事情并非不可能找到,但一个好的答案应该包括这些问题。