Я потерялся, используя метод аутентификации, который поставляется с шаблоном MVC 5.
Мне нужно было включить пользователя CreateBy в объект под названием client, поэтому после некоторых исследований я пришел к следующему:
Модель:
[Table("Clients")]
public partial class Client
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual int UserCreated_Id { get; set; }
[ForeignKey("UserCreated_Id")]
public virtual ApplicationUser UserCreated { get; set; }
}
Метод контроллера:
client.UserCreated_Id = User.Identity.GetUserId<int>();
Но мне пришлось изменить почти все в модели Identity:
Из
public class ApplicationUser : IdentityUser
Для
public class ApplicationUser : IdentityUser<int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
И почти 30 изменений из-за этого.
Но теперь у меня есть 2 DbContext:
Контекст идентичности:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
public ApplicationDbContext() : base("IPDB") {}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
Мой контекст приложения:
public class MyDbContext : DbContext
{
public MyDbContext() : base("IPDB")
{
// Tells Entity Framework that we will handle the creation of the database manually for all the projects in the solution
Database.SetInitializer<MyDbContext>(null);
}
public DbSet<Client> Clients { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// ANOTHER CHANGE I HAD TO MADE TO BE ABLE TO SCAFFOLDING
modelBuilder.Entity<ApplicationUserLogin>().HasKey<int>(l => l.UserId);
modelBuilder.Entity<ApplicationRole>().HasKey<int>(r => r.Id);
modelBuilder.Entity<ApplicationUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
}
Теперь моя проблема:
- Нужен ли мне 2 DbContext?
- Я правильно привязываю пользователя к объекту клиента?
- Мне нужно создать список всех пользователей и дополнительную информацию, прочитаю ли я информацию из 2 DbContext?
Пожалуйста, мне нужно несколько четкое руководство, потому что я очень смущен прямо сейчас, и мне очень нравится создавать отличный код, и я думаю, что это не так.