Я работаю над проектом ASP.NET MVC 5 в VS2013,.NET 4.5.1, который использует Entity Framework 6 Code-First. У меня есть база данных приличного размера, построенная и несколько работающая (проект составляет около двух недель). Я хочу интегрировать аутентификацию пользователя сейчас, но я не уверен, как подойти к ней. Проведя большую часть дня исследования, я решил дать новой структуре ASP.NET Identity возможность написать собственные поставщики членства или роли. Я запутался в том, как заставить все работать с существующей базой данных/моделью, которую у меня есть.
В настоящее время у меня есть объект с именем Employee
, который содержит основную информацию о сотрудниках (на данный момент). Подумав об этом весь день, я решил отделить аутентификацию от него до объекта User
, чего хочет Идентификация. Это сказано, как я могу заставить все это работать?
Здесь мой класс Employee
:
public class Employee : Person {
public int EmployeeId { get; set; }
public byte CompanyId { get; set; }
public string Name {
get {
return String.Format("{0} {1}", this.FirstName, this.LastName);
}
}
public string Password { get; set; }
public bool IsActive { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<Email> Emails { get; set; }
public virtual ICollection<Phone> Phones { get; set; }
public Employee() {
this.Addresses = new List<Address>();
this.Emails = new List<Email>();
this.Phones = new List<Phone>();
}
}
И мой класс DbContext
:
public class DatabaseContext : DbContext {
static DatabaseContext() {
Database.SetInitializer<DatabaseContext>(new DatabaseInitializer());
}
public DatabaseContext()
: base("Name=DatabaseContext") {
this.Database.Initialize(true);
}
public DatabaseContext(
string connectionString)
: base(connectionString) {
this.Database.Initialize(true);
}
/// DbSets...
public override int SaveChanges() {
try {
return base.SaveChanges();
} catch (DbEntityValidationException e) {
IEnumerable<string> errors = e.EntityValidationErrors.SelectMany(
x =>
x.ValidationErrors).Select(
x =>
String.Format("{0}: {1}", x.PropertyName, x.ErrorMessage));
throw new DbEntityValidationException(String.Join("; ", errors), e.EntityValidationErrors);
}
}
protected override void OnModelCreating(
DbModelBuilder modelBuilder) {
modelBuilder.Ignore<Coordinate>();
/// Configs...
base.OnModelCreating(modelBuilder);
}
}