6
Làm cách nào để bạn thêm người dùng, vai trò và thực thể cụ thể cho ứng dụng? Có vẻ như IdentityModel nhắm vào bối cảnh của chính nó?Đối tượng và người dùng giống, Vai trò?
internal sealed class Configuration : DbMigrationsConfiguration<Project.Models.SchoolContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(Project.Models.SchoolContext context)
{
// Seed the Entities
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" }
// );
//
}
}
vs
protected override void Seed(Project.Models.ApplicationDbContext context)
{
if (!context.Roles.Any(r => r.Name == "AppAdmin"))
{
var store = new RoleStore<IdentityRole>(context);
var manager = new RoleManager<IdentityRole>(store);
var role = new IdentityRole { Name = "AppAdmin" };
manager.Create(role);
}
if (!context.Users.Any(u => u.UserName == "founder"))
{
var store = new UserStore<ApplicationUser>(context);
var manager = new UserManager<ApplicationUser>(store);
var user = new ApplicationUser {UserName = "founder"};
manager.Create(user, "ChangeItAsap!");
manager.AddToRole(user.Id, "AppAdmin");
}
}
có vẻ tốt, cảm ơn! có cách nào để nhắm mục tiêu cả db mặc định cho người dùng/vai trò v.v ... và một dbcontext mới cho các thực thể để tạo hạt giống cả với một initilizer? Dường như EF thiết lập DbContext của riêng mình để quản lý tài khoản/Nhận dạng trong khi chúng tôi là nhà phát triển nhắm mục tiêu một DbContext khác nhau cho các hoạt động crud trên các thực thể/mô hình? Tôi có hiểu chính xác điều này không? – JReam
Chúng tôi thiết lập của chúng tôi để lấy được từ IdentityDbContext vì vậy chúng tôi chỉ có 1 initializer, di cư, vv cho cả hai bản sắc và các lớp học kinh doanh. Đối với một kiến trúc lớn hơn, nó có thể hạn chế khả năng của bạn để tách các công cụ dữ liệu vào một dự án hoặc kho lưu trữ khác, nhưng nó hoạt động tốt cho chúng ta. Julie Lerman có một vài bài viết hay về chủ đề này. https://msdn.microsoft.com/en-us/magazine/jj883952.aspx –
Cảm ơn, Steve. Vì vậy, trong ví dụ trên; sau khi bạn (! db.Users.Any()) {}, bạn sẽ bắt đầu tạo các đối tượng mới cho các lớp nghiệp vụ? – JReam