2015-10-23 64 views
1

據我瞭解實體框架6,它神奇地實現從app.config/web.config的連接字符串。從文檔的DbContext,部分備註:實體框架6與DNX的連接字符串

如果無參數的構造函數的DbContext從導出的上下文中調用,則導出的上下文的名字被用於尋找在app.config或web.config文件

連接字符串

的參數構造的情況下,或用於與連接字符串名稱的情況下:

代替使用推導的上下文名稱的,連接/數據庫的名稱,也可以明確地通過將指定名稱爲一個使用字符串的DbContext構造函數。該名稱也可以以「name = myname」的形式傳遞,在這種情況下,必須在配置文件中找到該名稱,否則將引發異常。

但是,在DNX項目中,我沒有app.config或web.config。如何在DNX項目中的實體框架6中指定連接?

+0

在Asp.Net 5(MVC 6)中如何使用實體框架6.x的可能的重複(http://stackoverflow.com/questions/29296073/how-to-use-entity-framework-6 -x-in-asp-net-5-mvc-6) – DavidG

+0

@DavidG這個問題有點幫助,但是假設像「startup.cs」這是MVC 6特定的東西。我沒有參與MVC 6項目。 – Martijn

+0

然後你在做什麼? – DavidG

回答

5

至少對於代碼優先的方法,不需要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之後可能無效):

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

[...CODE ...] 

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

Now DbCon http://bleedingnedge.com/2015/10/15/configuration-providers/

:文本可以

new ApplicationDbContext(Configuration["Data:DefaultConnection:ConnectionString"]) 

假設你已經構造了ApplicationDbContext這樣

public ApplicationDbContext(string nameOrConnectionString) 
     : base(nameOrConnectionString) 
    { 
    } 

如果您想了解更多關於DNX配置我的博客帖子大約是在創建

關於ASP.NET 5和EF6的不同配置問題的其他信息可以在這裏找到(主要關注於MVC項目),包括配置mssql,localdb,postgresql和避免其他app.config問題:http://bleedingnedge.com/2015/11/01/entity-framework-6-with-asp-net-5/