Nasıl özel ek alanlar oluşturmak için MVC4 içinde İlgili olarak
ASP MVC 4 yeni özellik ile karşılaştım, yeni üyelik db şema ve yeni başlatma ile birlikte gelir. Mvc 3 ve eski sürümleri geliştirici özel kullanıcı profili alanlarını web özellikleri kullanarak oluşturmak mümkün.config, ama şimdi varsayılan filtreler ad yöntem 4 proje mvc ile karşı karşıya
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
ve kullanıcı profili tablo:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
Ama yöntem İnitializeDatabaseConnection diğer ek alanlar oluşturmak için ihtiyacım var sadece Kullanıcı adı ve kullanıcı Kimliği oluşturmak.
EF codeFirst yaklaşım içinde iyi bir deneyim var, ve bu durumda İlgili Sınıf düzenlemek için deneyin:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
[Column]
[Required]
public string UserName { get; set; }
[Column]
[Required]
public string FirstName { get; set; }
[Column]
[Required]
public string LastName { get; set; }
}
Ama ben veritabanı oluştur, bende herhangi bir değişiklik, Özel Db alanları oluşturuldu. bkz. Bana lütfen yardım edin, nasıl özel kullanıcı alanları oluşturabilir miyim?
CEVAP
Cevap yukarıda tertipleyerek
WebSecurity.InitializeDatabaseConnection
Yöntemini bildiren yardımcı olur
Eğer kullanmak istediğiniz veritabanı tablosunu içeren kullanıcı profili bilgileri (kullanıcı adları, e-posta adresleri, vb.), sizin belirlediğiniz bir bağlantı dizesi ve tablo adı olan üyelik sistemi kullanır bağlanmak için bu bilgileri. Eğer mevcut kullanıcı profili bir tablo kullanmak istiyorsanız, İnitializeDatabaseConnection belirtebilirsiniz() yöntemi otomatik olarak kullanıcı profil tablo oluşturmak gerekir. (Kullanıcı profili tablosu için bir veritabanı zaten var.)
Eğer öyleyse biz sadece profil tablo oluşturma ve InitializeDatabaseConnection
yöntemi çalıştırmak emin olmak için tablo sonra gerek UserProfile
tabloya daha fazla alan istiyorsak yerde zaten.
Standart MVC4.0 proje Hesap denetleyicisi diye verdim VS2012 şablon
[Authorize]
//[InitializeSimpleMembership]
public class AccountController : Controller
{
ve taşındı 15* *EF Kodu İlk Veritabanı Başlatıcı içine
public class MyDatabaseInit: DropCreateDatabaseAlways<MyDatabaseContext>
{
protected override void Seed(MyDatabaseContext context)
{
SeedMembership();
}
private void SeedMembership()
{
WebSecurity.InitializeDatabaseConnection("MyDatabaseContext",
"UserProfile", "UserId", "UserName", autoCreateTables: true);
}
}
InitializeDatabaseConnection
tablo bir kez çalışır sağlanması yer alıyor zaten.
Ekledi EF Kod benim İlk model UserProfile
sınıfı
public class MyDatabaseContext : DbContext
{
public DbSet<UserProfile> UserProfiles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
Eklendi UserProfile
tabloda ekstra alan
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string MobilePhone { get; set; }
}
Tüm ihtiyacınız şimdi ayarlamak için veritabanı başlatma stratejisi ne zaman uygulama başlar ve aynı zamanda bir arama sorgusu veritabanı emin olun alır yaratılan bu noktada, daha önce herhangi bir yetkilendirme/kimlik doğrulama kodu denir.
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
Database.SetInitializer<MyDatabaseContext>(new MyDatabaseInit());
new MyDatabaseContext().UserProfile.Find(1);
}
Nasıl özel bir yönerge içinde değerlen...
Nasıl kendi kapsamı ile özel bir yöner...
Bir film şeridi içinde, nasıl birden f...
Nasıl otomatik olarak SD kart üzerinde...
Nasıl otomatik olarak N "farklı&q...