我正在使用Entity Framework 4.3 code first
使用已經存在的數據庫。如何處理連接相同2個表的關聯表
有一個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,那麼需要返回一個用戶列表,這個用戶列表被標記爲匿名用戶。我如何做到這一點?我有這個,但二者的用戶和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,然後它需要返回記錄用戶蘇珊倫肖和麥克風helle du Toit。
只是爲了清楚起見,如果你還在迷茫...
我有類似的情況。我有一個產品表和一個規格表。這兩個由名爲ProductSpecifications的分析錶鏈接起來。我試圖在這裏實現相同的功能,但是2個表將是Users表,並且關聯表是Impersonations。
沒有人可以幫助我嗎? –