2015-02-10 5 views
0

Необходимо иметь класс контекста, который происходит из DbContext, когда вы используете Entity Framework.Класс DbContext в Asp.net MVC 5 с идентификатором 2.0

Asp.net Идентичность использует EF и шаблон по умолчанию создает класс ниже:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection", false) 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 

Этот класс не наследуется непосредственно из DbContext. Для моих собственных данных (мои классы, которые я хочу сохранить в db), должен ли я создать свой собственный класс контекста db?

Если я хочу выполнить операцию, которая будет обновлять как пользователя, так и один из моих собственных классов, мне нужно использовать оба контекста. Так что это не очень естественно.

Должен ли я использовать класс ApplicationDbContext в качестве контекста для своих собственных классов? Будет ли это работать?

Каков наилучший способ использования EF для моих собственных классов при использовании идентификации?

+1

Читайте цепочку наследования .... IdentityDbContext является производным от DbContext. –

+0

Я бы использовал отдельные контексты в своих приложениях, но тогда я бы тоже использовал шаблон репозитория, поэтому на каком-то уровне это действительно не имеет значения. Отдельные контексты могут быть полезными, если вы развертываете свою систему членства на другой сервер из домена db в соответствии с SOP многих крупных компаний. – rism

+0

Откуда у вас возникла идея, что IdentityDbContext не получается из DbContext? –

ответ

2

Используйте один класс Context, наследующий от IdentityDbContext. См. this answer для получения дополнительной информации.

Вам необходимо добавить DbSets для всех ваших классов в ApplicationDbContext.

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
    : base("DefaultConnection", false) 
    { 
    } 

    //Public DBSets 
    public DbSet<LeaveApplication> LeaveApplications { get; set; } 
    public DbSet<LeaveStatus> LeaveStatus { get; set; } 
    public DbSet<Department> Departments { get; set; } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 
Смежные вопросы