2015-10-23 4 views
1

Насколько я понимаю Entity Framework 6, это магически материализует строку подключения из app.config/web.config. Из DbContext документации, раздел примечания:Строка соединения Entity Framework 6 с DNX

Если DbContext конструктор без параметров вызывается из производного контекста, то имя полученного контекста используется для поиска строки подключения в app.config или web.config файла

для случая конструктора без параметров, или в случае с именем строки подключения:

Вместо того, чтобы использовать полученное имя контекста, имя соединения/базы данных также может быть указано в явном виде путем пропускания имя одному конструкторов DbContext, которые берут строку. Имя также может быть передано в форме «name = myname», и в этом случае имя должно быть найдено в файле конфигурации или будет выбрано исключение.

Однако в проекте DNX у меня нет app.config или web.config. Как указать соединение в Entity Framework 6 в проекте DNX?

+0

Возможный дубликат [Как использовать Entity Framework 6.x в Asp.Net 5 (MVC 6)] (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 (этот класс может быть недействительным после бета8):

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

[...CODE ...] 

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

Теперь DbCon Текст может быть создан с

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

Предполагая, что у вас уже есть конструктор для ApplicationDbContext как этот

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

Если вы хотите узнать больше о конфигурации в 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/entity-framework-6-with-asp-net-5/

Смежные вопросы