Entity framework 4 使用EntityFramework时出现关联问题

Entity framework 4 使用EntityFramework时出现关联问题,entity-framework-4,Entity Framework 4,我目前正在测试EntityFramework 4.1 我的问题是,我有团队课和游戏课 class Team { string Name { get; set; } } class Game { Team HomeTeam { get; set; } Team AwayTeam { get; set; } } 仍然没有找到一种方法来绘制这张地图。我用NHibernate做到了这一点,但用EF没有运气。有什么指示吗?这是我的地图: protected over

我目前正在测试EntityFramework 4.1

我的问题是,我有团队课和游戏课

class Team {
    string Name { get; set; }
}

class Game {
     Team HomeTeam { get; set; }
     Team AwayTeam { get; set; }
}

仍然没有找到一种方法来绘制这张地图。我用NHibernate做到了这一点,但用EF没有运气。有什么指示吗?

这是我的地图:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Team>().HasKey(t => t.Name);

        modelBuilder.Entity<Game>().HasKey(
                        g => new { g.AwayTeamName, g.HomeTeamName });

        modelBuilder.Entity<Game>()
                        .HasRequired(g => g.HomeTeam)
                        .WithMany()
                        .HasForeignKey(g => g.HomeTeamName)
                        .WillCascadeOnDelete(true);

        modelBuilder.Entity<Game>()
                        .HasRequired(g => g.AwayTeam)
                        .WithMany()
                        .HasForeignKey(g => g.AwayTeamName)
                        .WillCascadeOnDelete(false);

        base.OnModelCreating(modelBuilder);
    }

请注意,您的POCO上必须有某种密钥,因此需要HomeTeamName和AwayTeamName。如果您想在消费代码中隐藏它们,可以将它们保留在内部。

我在游戏和团队中有Id。。。并使用HomeTeamId和AwayTeamId。不过,谢谢。只有一个问题,通过使用这个,我不允许同一个主队和AwayTeam打一场比赛,对吗?因为我将HomeTeamName和AwayTeamName设置为游戏的键。上面的代码中没有任何东西会阻止你将主客场球队设置为相同的。将验证逻辑添加到POCO或系统中的其他层将由您决定。
public class Team
{
    public string Name { get; set; }
}

public class Game
{
    internal string HomeTeamName { get; set; }
    public Team HomeTeam { get; set; }

    internal string AwayTeamName { get; set; }
    public Team AwayTeam { get; set; }
}