ASP.NET Identity DbContext путаница
Приложение MVC 5 по умолчанию поставляется с этим фрагментом кода в IdentityModels.cs - этот фрагмент кода предназначен для всех операций идентификации ASP.NET для шаблонов по умолчанию:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
Если я создаю новый контроллер с использованием представлений в Entity Framework и создаю «Новый контекст данных ...» в диалоговом окне, я получаю следующее:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
public class AllTheOtherStuffDbContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
//
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, please use data migrations.
// For more information refer to the documentation:
// http://msdn.microsoft.com/en-us/data/jj591621.aspx
public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
{
}
public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
}
}
Если я создаю другой контроллер + представление с использованием EF, например, для модели Animal, эта новая строка будет автоматически сгенерирована прямо подpublic System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
- нравится:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
public class AllTheOtherStuffDbContext : DbContext
{
// You can add custom code to this file. Changes will not be overwritten.
//
// If you want Entity Framework to drop and regenerate your database
// automatically whenever you change your model schema, please use data migrations.
// For more information refer to the documentation:
// http://msdn.microsoft.com/en-us/data/jj591621.aspx
public AllTheOtherStuffDbContext() : base("name=AllTheOtherStuffDbContext")
{
}
public System.Data.Entity.DbSet<WebApplication1.Models.Movie> Movies { get; set; }
public System.Data.Entity.DbSet<WebApplication1.Models.Animal> Animals { get; set; }
}
}
ApplicationDbContext
(для всех вещей ASP.NET Identity) наследуется отIdentityDbContext
который в свою очередь наследует отDbContext
. AllOtherStuffDbContext
(для моих собственных вещей) наследует отDbContext
.
Итак, мой вопрос:
Какой из этих двух (ApplicationDbContext
а такжеAllOtherStuffDbContext
) я должен использовать для всех моих других моделей? Или я должен просто использовать автоматически сгенерированный по умолчаниюApplicationDbContext
так как это не должно быть проблемой с его использованием, так как он является производным от базового классаDbContext
или будут какие-то накладные расходы? Вы должны использовать только одинDbContext
объект в вашем приложении для всех ваших моделей (я где-то читал), поэтому я не должен даже рассматривать использование обоихApplicationDbContext
а такжеAllOtherStuffDbContext
в одном приложении? Или что является лучшей практикой в MVC 5 с ASP.NET Identity?