我有一个Trainee
,必须连接到ApplicationUser
。 Trainee
模型包含与实际用户帐户无关的字段,但需要从FirstName
获取LastName
,ApplicationUser
,因为用户可能不会必须是实习生。
但是,尽管在Trainee
:
在模型生成期间检测到一个或多个验证错误:
MyApp.Models.IdentityUserLogin :: EntityType 'IdentityUserLogin'没有定义键。为此定义密钥 的EntityType。 MyApp.Models.IdentityUserRole :: EntityType 'IdentityUserRole'没有定义键。为此定义密钥 的EntityType ...
...等等。无论如何,这是我目前的架构:
实习生模特:
public class Trainee
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public string TraineeId { get; set; }
// other fields, not relevant
[ForeignKey("TraineeId")]
public virtual ApplicationUser User { get; set; }
}
ApplicationUser和context:
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
// other arbitrary fields
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("SARSDbContext")
{
}
}
数据上下文和模型构建器:
public class SARSDbContext : DbContext
{
public DbSet<Trainee> Trainees { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Trainee>()
.HasRequired(c => c.User);
}
}