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中指定连接?
至少对于代码优先方法,不需要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 /
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |