我們有遺留的數據庫,我們將新的對象和道具映射到舊的表和列。到現在爲止還挺好。我們有成功映射的多對多關係。中間表格包含額外的數據。當我們嘗試將中間表映射到一個對象時,我們會發現映射已經定義的異常。如果我們從關係的任何一邊刪除映射,那麼我們就會錯誤地發現表缺失(ofc,我們期望這一點)。我可以用NHibernate輕鬆做到這一點,我開始認爲EF缺少真正的許多功能。所以,請告訴我我錯了,我們可以用EF做到這一點。EF CF:與其他信息的多對多關係
問候
編輯:這是一個失敗的虛擬樣品。
class User
{
public ICollection<User> Followers{get;set;}
}
class UserRelation
{
public User User{get;set;}
public User Follower{get;set;}
public DateTime CreatedOn{get;set;}
}
用戶映射
modelBuilder
.Entity<User>()
.HasMany<User>(user => user.Followers)
.WithMany()
.Map(m =>m.MapLeftKey("user_id").MapRightKey("follower_id")
.ToTable("user_follower"));
用戶關係映射
modelBuilder
.Entity<UserRelation>()
.ToTable("user_follower");
modelBuilder
.Entity<UserRelation>()
.HasOptional<User>(f => f.User)
.WithRequired().Map(m => m.MapKey("user_id"));
modelBuilder
.Entity<UserRelation>()
.HasOptional<User>(f => f.Follower)
.WithRequired().Map(m => m.MapKey("follower_id"));
modelBuilder
.Entity<UserRelation>()
.Property(entity => entity.CreatedOn)
.HasColumnName("created_on");
異常
指定的模式無效。錯誤: (67,6):錯誤0019:已經定義了架構'dbo'和表'user_follower'的EntitySet'UserUser'。每個EntitySet必須引用一個唯一的模式和表。
EDIT2:這裏是這種模式的另一個例子:http://learnentityframework.com/LearnEntityFramework/tutorials/many-to-many-relationships-in-the-entity-data-model/
我使用EF幾個許多一對多的關係相當成功,或許如果你告訴我們的一些地方比如你煩惱是,我們可以幫助 – 2011-03-22 13:10:05
是的,我意識到和樣品是上漲 – mynkow 2011-03-22 13:54:59