2016-07-14 6 views
4

Я работаю над приложением ASP.NET Core, которое работает под полным .NET Framework 4.6.1. Я использую Entity Framework 6, так как Entity Framework Core имеет некоторые ограничения на данный момент (особенно со многими отношениями). Я пытаюсь понять, как правильно настроить и использовать Entity Framework через Injection Dependency Injection ASP.NET Core.Настройка платформы Entity Framework в ASP.NET Core

Вопрос 1

Если MyContext наследовать System.Data.Entity.DbContext или Microsoft.Data.Entity.DbContext?

Вопрос 2

Какой из них будет правильный способ настройки его службы, так что он может быть введен в конструкторах?

private const string ConString = "myConnectionString"; 
public void ConfigureServices(IServiceCollection services) 
{ 
    //FIRST WAY - requires MyContext to be of type Microsoft.Data.Entity.DbContext 
    services.AddDbContext<MyContext>(options => { }); 

    //SECOND WAY - requires MyContext to be of type Microsoft.Data.Entity.DbContext 
    services.AddEntityFramework.AddDbContext<MyContext>(options => { }); 

    //THIRD WAY 
    services.AddTransient(provider => new MyContext(ConString)); 

    //FOURTH WAY 
    services.AddScoped(provider => new MyContext(ConString)); 
} 

Хотя различия между AddTransient и AddScoped хорошо определены in the documentation.

Вопрос 3

В каком из случаев выше этого требуется, при условии, что я использую SQL Server?

services.AddEntityFrameworkSqlServer(); 

ответ

3

Вопрос 1: System.Data. Entity.DbContext

Вопрос 2:

services.AddScoped(provider => new MyContext(ConString)); 

вы хотите 1 контекст на веб-запрос

Вопрос 3: вам не нужен этот

Те другие расширения предназначены для использования EF сердечника НЕ ​​EF 6

+0

Не знаете, почему существуют три пространства имен (System.Data, Microsoft.Data и Microsoft.EntityFrameworkCore) для одной и той же структуры , но спасибо за ответ! Microsoft должна удалить эти расширения EF Core и поместить их в пакет EF Core –

0

Первый qauestion: using Microsoft.EntityFrameworkCore; хорошо работает в моем проекте.

Второй вопрос: ваш первый путь является правильным

Третий вопрос: Если настроить все, как что вам не нужно, чтобы добавить services.AddEntityFrameworkSqlServer();

+0

Что вы базировать второй ответ? –

+0

Я проверил все настройки «Entity Framework Core» в моей «.Net Core», ведьма работает правильно. У меня были те же проблемы, и только эти настройки отлично работают, очевидно, в моем случае. – MKasprzyk

+1

Но, как вы сказали, для «Entity Framework Core», который очень отличается от «Entity Framework Core» –

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