2014-10-19 24 views
6

Tüm ASP.Net Kimliği çerçevesini anlamada sorun yaşıyorum, önce Kimlik 1.0'ı varolan bir uygulamaya entegre etmeyi denedim, ancak 2 DbContext sınıfı ile bittim, uygulama verilerim MyDbContext üzerindeydi, ve IdentityDbContext'teki Identity kullanıcı verileri.ASP.NET Kimlik 2.0'ı Genişletme

Hem uygulama verileri hem de Kimlik ile ilgili veriler için tek bir DbContext kullanmak istiyorum ve farklı bir soruda IdentityDbContext'i DbContext'i kullandığım gibi kullanabileceğimi buldum; Ancak, sanırım bir şey özlüyorum.

Ben Kimlik ekibi

PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre 

örnek projesinin kullanıldığı ve ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 

    static ApplicationDbContext() 
    { 
     // Set the database intializer which is run once during application start 
     // This seeds the database with admin user credentials and admin role 
     Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer()); 
    } 

    public virtual DbSet<Student> students { get; set; } 
    public virtual DbSet<Teachers> teachers { get; set; } 

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

O 2 doldurmak için ApplicationDbInitializer tohum yöntemi kullanıyorum için DbSet özelliklerini eklemek için çalıştı ediyorum tabloları, bunun gibi bir şey:

Student s = new Student { Name = "John" ... }; 
db.students.Add(s); 
db.SaveChanges(); 

Ama EF görünmüyor Bu 2 tabloyu oluşturmak için, tohum yöntemi çağrılmıyor, neler oluyor?

DÜZENLEME:

Eh, EF bırakın ve veritabanı yeniden için veritabanını kullanan bir kod çalıştırmak için gerekli.

Tüm uygulama verilerini yönetmek için IdentityDbContext'in kullanıldığı herhangi bir ek yük var mı? IdentityDbContext kullanımı ile IdentityDbContext < IdentityUser> genel sürümünü kullanma arasındaki fark nedir?

cevap

4

Çoğu durumda, yalnızca tek bir Varlık Çerçevesi bağlamı kullanılması tercih edilir, o zamandan beri, yalnızca tek olanı yönetmeniz gerekir, bu da daha az masraf anlamına gelir.

Bu ikisi arasındaki fark, IdentityDbContext'un yalnızca DbContext'ten türeyen bir sınıftır (kendinizinkini yaparken yaptığınız gibi), ancak kimlik doğrulamasıyla uğraşan ek DbSet'ler içerir, böylece bunu kendiniz uygulamak zorunda kalmazsınız . IdentityDbContext'dan türetilmiştir. Daha fazla bilgi için, documentation'a bakabilirsiniz.

İlgili konular