我使用的Entity Framework 4.3 code first
使用已经存在的数据库。
有一个Users table
具有以下的列:
- UserID (int)
- FirstName (string)
- Surname (string)
我有一个名为关联表Impersonations
。 该表冒名顶替是一个用户表和相同的用户台之间的关联表。 用户可以有用户的列表。 这里是Impersonations table
结构:
- ImpersonateID (int primary key)
- UserID (int FK to Users table's UserID column)
- ImpersonatedUserID (int FK to Users table's UserID column)
我有我想要映射到这些列属性的用户等级:
public class User : IEntity
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmployeeNumber { get; set; }
public virtual ICollection<User> ImpersonatedUsers { get; set; }
public virtual ICollection<User> Users { get; set; }
}
在我的数据库上下文类我有以下几点:
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfiguration());
}
用户配置:
class UserConfiguration : EntityTypeConfiguration<User>
{
internal UserConfiguration()
{
this.Property(x => x.Id).HasColumnName("UserID");
this.Property(x => x.LastName).HasColumnName("Surname");
this.Property(x => x.EmployeeNumber).HasColumnName("StaffNumber");
this.HasMany(i => i.Users)
.WithMany(c => c.ImpersonatedUsers)
.Map(mc =>
{
mc.MapLeftKey("UserID");
mc.MapRightKey("ImpersonatedUserID");
mc.ToTable("Impersonations");
});
}
}
我有没有正确链接了这个使用实体框架? 如果我通过用户ID则需要用户的列表要返回标记为inpersonated用户。 我该怎么做呢? 我有这个,但二者的用户和ImpersonatedUsers是空的:
return DbContext.Users
.Include("ImpersonatedUsers")
.SingleOrDefault(x => x.Id == userId);
可以说,我有我的用户表(ID,姓,名,员工数量)以下数据:
7 Craig Matthews 123456
8 Susan Renshaw 234567
9 Michelle du Toit 34567
而在我的模仿秀表如下数据(模拟的ID,用户ID,模拟用户ID):
1 7 8
2 7 9
所以,如果我通过以7:3的用户ID,然后它需要返回记录用户苏珊伦肖和米歇尔都伊特。
只是为了清楚起见,如果你还在迷茫......
我有一个类似的情况。 我有一个产品表和规格表。 这2个是由assication表称为ProductSpecifications联系起来。 我想在这里实现相同,但2个表将是用户表和关联表是模仿秀。