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