3

Я пытаюсь использовать EF6 с VS2015 CTP и ASP.NET MVC 6. он не распознает приведенный ниже код в startup.cs, который я добавил при использовании EF7.Entity Framework 6 не распознает AddSqlServer()

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddEntityFramework(Configuration) 
      .AddSqlServer() 
      .AddDbContext<VNDBContext>(options => options.UseSqlServer(Configuration.Get("Data:VNDBContext:ConnectionString"))); 

     services.AddMvc().Configure<MvcOptions>(options => 
     { 
      var jsonFormatter = (JsonOutputFormatter)options.OutputFormatters 
      .Where(o => o.Instance.GetType() == typeof(JsonOutputFormatter)).First().Instance; 
      jsonFormatter.SerializerSettings.ReferenceLoopHandling = 
       ReferenceLoopHandling.Ignore; 

     }); 
     services.AddSingleton<INodeService, NodeService>(); 
    } 

Если я использую EF7, у него есть другие проблемы, так как он еще не созрел.

Как установить вышеупомянутую настройку, делая все в MVC6, но с EF6?

+0

См. Этот вопрос, как использовать EF 6. http://stackoverflow.com/questions/29296073/how-to-use-entity-framework-6-x-in-asp-net-5-mvc-6/29572219 # 29572219 – Tom

ответ

1

Как @ErikEJ упоминает в своем ответе, EF6 сильно отличается от EF7 и не имеет никаких утилит для работы в Startup.cs. Однако это не означает, что это невозможно; Я делаю это с моим собственным проектом с линией, подобным следующему:

services.AddTransient<MyEf6DbContext>(sp => new MyEf6DbContext(Configuration.Get("Data:VNDBContext:ConnectionString"))); 

Это позволяет использовать MyEf6DbContext впрыскивается в контроллеры и другие услуги, так же, как и следовало ожидать! Вам нужно будет сделать еще одну работу, чтобы получить Identity 3 и такие, чтобы работать с EF6, но они все очень подключаемы.

1

EF6 - это совсем другая структура из EF7 и не имеет метода расширения UseSqlServer.

+0

, так просто ли использовать EF6 с mvc 6 в vs2015? –

+0

Я предполагаю, что это должно быть, если вы нацеливаетесь на .net 4.5, но, конечно же, вы не можете использовать новый apis! – ErikEJ

1

На самом деле вы можете использовать EF6 с dnx451 и MVC6, что дает вам доступ ко всем новым API. Однако EF6 не предназначен для работы с новой системой DependencyInjection, поэтому вам необходимо настроить его самостоятельно. Кроме того, миграция не будет работать вообще. Я написал несколько команд «k/dnx», которые могут обрабатывать миграции так же, как это делает проект EF7.

1

На самом деле с последним обновлением они немного изменили его! они переименовали пакет в EntityFramework.MicrosoftSqlServer Попробуйте выполнить поиск с помощью этого менеджера nuGet и вы получите все методы, которые вы ищете.