У меня проблема с выяснением, как заставить это работать для EF 4.1 Code First. Я огляделся и обнаружил похожую проблему , но я не смог заставить ее работать на меня, и похоже, что и для этого человека ответа не последовало.
Вот упрощенная версия двух рассматриваемых объектов.
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; }
}
А вот и мой код для регистрации ФК
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 и другой список игр, представляющий собой комбинацию из двух, но я хотел бы попытаться избежать этого, если это возможно. Я все еще изучаю это, поэтому любые дополнительные объяснения или советы будут оценены.