我已经定义了一组 Code First 实体,如下所示:
public class User
{
public int UserId { get; set; }
public string username { get; set; }
}
public abstract class UserType
{
public virtual User User { get; set; }
public int UserId { get; set; }
}
public class RoleUser : UserType
{
public string role { get; set; }
}
public class SiteUser : UserType
{
public string site { get; set; }
}
public class Testctx:DbContext
{
static Testctx()
{
Database.SetInitializer(new DropCreateDatabaseAlways<Testctx>());
}
public DbSet<User> Users { get; set; }
public DbSet<SiteUser> SiteUsers { get; set; }
public DbSet<RoleUser> RoleUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasKey(u=>u.UserId).ToTable("User");
modelBuilder.Entity<RoleUser>().HasKey(u => u.UserId).ToTable("RoleUser");
modelBuilder.Entity<SiteUser>().HasKey(u => u.UserId).ToTable("SiteUser");
}
}
如果我希望 User、RoleUser、SiteUser 每个都有一个名为“ID”的 ID 列,我该如何实现这一点,同时在 Usertype 中保持与用户的外主键关系。
例如,如果我声明 public class Entity{ public int ID {get;set;}} 并且都从 Entity 继承,我会在 RoleUser 和 SiteUser 中留下一个 UserId 和一个 ID 字段。