我有一個問題想出如何使EF 4.1代碼優先這項工作。我環顧四周,發現一個similar problem,但我無法讓它爲我工作,它聽起來像它沒有得到這個人的回答。EF 4.1代碼優先映射兩列在一張表中列出
下面是兩個對象的簡化版本。
public class Team
{
public int TeamId {get; set;}
public virtual IList<Game> Games {get; set;}
}
public class Game
{
public int GameId {get; set; }
public int AwayTeamId {get; set;}
public int HomeTeamId {get; set;}
public virtual Team HomeTeam { get; set; }
public virtual Team AwayTeam { get; set; }
}
這裏是我的註冊FKS代碼
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Game>()
.HasRequired(a => a.HomeTeam)
.WithMany()
.HasForeignKey(u => u.HomeTeamId).WillCascadeOnDelete(false);
modelBuilder.Entity<Game>()
.HasRequired(a => a.AwayTeam)
.WithMany()
.HasForeignKey(u => u.AwayTeamId).WillCascadeOnDelete(false);
}
我要帶回所有遊戲(在家或外出),一個團隊在不在。現在,EF正在打造一個TeamId列我的數據庫永遠不會被填充。如果我想要的是不可能的,那麼我可以列出HomeGames和AwayGames的列表,以及另一個是兩者結合的遊戲列表,但如果可能的話,我想盡量避免它。我仍然在學習這一點,所以任何額外的解釋或提示將不勝感激。
這裏有一個類似的問題:http://stackoverflow.com/questions/6155953/ef-4-1-multiple-many-to-many-relationships-in-single-class/6156615#6156615基本上你自己的建議是正確的路要走。將一端的兩個端點映射到關聯另一端的單個端點是不可能的。 – Slauma