我有一個基類這樣的:如何在實體框架上下文類的模型製作dynamicaly變化科拉姆名
public class BaseClass : IEditableObject {
public BaseClass() {
}
public Guid Id { get; set; }
public void BeginEdit() {
}
public void CancelEdit() {
}
public void EndEdit() {
}
}
而且我有2派生類這樣的:
public class User : BaseClass {
[Column("UserFirstName")]
public string FirstName {
get;
set;
}
[Column("UserLastName")]
public string LastName {
get;
set;
}
}
public class School : BaseClass {
[Column("SchoolName")]
public string Name {
get;
set;
}
}
我使用Entity Framework Code-First並在我的上下文類中配置這些類:
public class MyContext : DbContext {
public MyContext() : base() {
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
public DbSet<User> Users { get; set; }
public DbSet<School> Schools { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
}
}
當我運行程序數據庫和表被創建,但主鍵列名是Id爲每個表。我希望列名是用戶標識或學校標識。
所以我必須在模型中創建更改列名稱TableNameId配置實體
我能做到這一點的工作還有:
modelBuilder.Entity<User>().Property(i => i.Id).HasColumnName("UserId");
modelBuilder.Entity<School>().Property(i => i.Id).HasColumnName("SchoolId");
假設我有上百個班,我會爲每個實體逐個進行配置,這是對時間的巨大浪費。
我該如何動態使用迭代或其他我不知道的工作來完成這項工作?
非常感謝伊萬。這是我的情況的答案。 –