2016-11-09 6 views
3

Я пытаюсь настроить новый проект на использование Entity Framework 6 с помощью ASP.net Core. Я использую полный фреймворк .net, чтобы иметь возможность использовать Entity Framework 6. Это проект, который ранее был в MVC, и мне нужно перенести его в Core. Это то, что я сделал (у меня есть два проекта, один Asp.net Core и class library, который содержит некоторые классы и DBContext class):Как настроить Entity Framework 6 для ASP.net Core

appsettings.json:

"Data": { 
    "ConnectionStrings": { 
     "MyConnection": "Server=namedatabase.database.secure.windows.net,1433;Database=database_Name;User ID=blahblah;Password=blahblah;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" 
    } 
    } 

Startup.cs

public void ConfigureServices(IServiceCollection services) 
     { 
     services.AddScoped<MyDBContext>(_ => new LIGDataContext(Configuration.GetConnectionString("MyConnection"))); 
     } 

У меня есть DBContext класса отделенного в class library(.dll):

public class MyDBContext: DbContext 
    { 
public MyDBContext(string connString): base(connString) 
     { 
     } 

Но у меня есть этот код внутри некоторых контроллеров моего asp.net Core проекта, и я не уверен, как в настоящее время относятся к экземпляру DBContext ... Очевидно это прося параметр connString, это первый раз, когда я делаю это, и я не уверен, что это лучший подход для этого, ConfigurationManager больше не доступен в Core. Что мне нужно делать? Это Entity Framework 6 нет Entity Framework Ядро ..

 public class MyController : Controller 
     { 
      public ActionResult MyAction() 
       { 
        var _ctx = new MyDBContext(); 
        return PartialView(_ctx.FormsiteApplications.Where(f => f.Application).OrderBy(f => f.Title).ToList()); 
       } 
+1

Вы настраиваете инъекцию DbContext в 'ConfigureServices()' 'с services.AddScoped (_ => новый LIGDataContext (Конфигурация .GetConnectionString ("MyConnection"))); '. Любая причина не позволять DbContext вводиться в свойство Controller через свойство (вы создаете экземпляр 'var _ctx = new MyDBContext();')? Я думаю, что он должен работать. – dime2lo

ответ

0

dime2lo правильно, вы можете вводить DbContext к контроллеру.

codepublic class StoreController : Controller 
{ 
    private DefaultDbContext _dbContext = null; 
    public StoreController(DefaultDbContext dbContext) 
    { 
     this._dbContext = dbContext; 
     //Do something with this._dbContext ... 
    } 
} 

или создать контекстную завод

public class DefaultDbContextFactory : IDbContextFactory<DefaultDbContext>{ 
public DefaultDbContext Create() 
{ 
    return new DefaultDbContext("Server=XXXX ;Database=XXXXX;Trusted_Connection=True;"); 
} 

Reference : Getting Started with ASP.NET Core and Entity Framework 6

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