2012-03-10 199 views
0

我有一個Tenant類,它通過數據庫中的TenantUser錶鏈接到用戶。 這種關係很多=>很多,但我實際上只想以一種方式公開映射。Fluent Code First EF 4.3

租戶有一個屬性

virtual ICollection<User> Users { get; set; } 

用戶類沒有屬性映射回去。

是否有可能使用屬性或流利的API來映射租戶的用戶屬性,以便通過TenantUser表收集特定租戶的用戶。

這是可能的,還是用戶類需要一個租戶集合,以指定任何類型的映射?

我也會(可選)在管理中介表上下文有

DbSet<TenantUser> 

,但爲了方便,我想物業的租客類訪問。

謝謝。

回答

4

您可以用流利的API定義了許多一對多的映射,也只有一個集合在模型類暴露:

modelBuilder.Entity<Tenant>() 
    .HasMany(t => t.Users) 
    .WithMany() 
    .Map(x => 
    { 
     x.MapLeftKey("TenantId"); 
     x.MapRightKey("UserId"); 
     x.ToTable("TenantUser"); 
    }); 

不能定義與數據註解了這種關係。

請注意,實體框架中的多對多關係中沒有TenantUser實體。因此,您無法在上下文中創建DbSet<TenantUser>來管理鏈接表。當您通過在Tenant.Users集合中添加/刪除元素來添加或刪除關係時,EF在內部管理此表。

+0

對不起,花了這麼長時間,我無法測試幾天。很好的答案,謝謝。我沒有想到WithMany()可以在沒有參數的情況下被指定。這個流利的API有沒有好的文檔? – Jim 2012-03-14 13:50:18

+0

@Jim:Intellisense :)老實說,我只是通過試驗,谷歌搜索以及在Intellisense中查找哪些方法可用等等,纔想出了這些東西。官方文檔,我認爲,是這樣的:http://msdn.microsoft.com/en-us/library/hh295844%28v=vs.103%29.aspx但我從來沒有讀過它。 – Slauma 2012-03-14 14:47:52

相關問題