插入一对多关系,来自同一个表的两个外键。实体框架3.5

时间:2012-04-11 06:24:26

标签: database linq entity-framework linq-to-entities

enter image description here
在我的场景中,我与单个表有很多关系。 所以在Player_VsMode中我有两个外键的Player表。一个是玩家,第二个是对手。当我试图在表Player_VsMode中插入。在Player_vsMode中插入数据都很好 但在Player中它添加了一个新的对手对象 。这对我来说没有意义,为什么Hell EntityFramework添加了这一新对手!我的代码是

 public Void performVsMode(Player_VsMode vsMode)
    {
        Player playerFromDB = legendWarsEntities.Player.First(v => v.email == vsMode.Player.email);
        Player enemyFromDB = legendWarsEntities.Player.First(v => v.email == vsMode.Opponent.email);
        vsMode.PlayerReference.Value = playerFromDB;
        vsMode.OpponentReference.Value = enemyFromDB;
        legendWarsEntities.AddToPlayer_VsMode(vsMode);
        legendWarsEntities.SaveChanges();

    }

1 个答案:

答案 0 :(得分:0)

我不推荐这个 刚做了一个工作,向项目经理说它正在工作:)。

  Player playerFromDB = legendWarsEntities.Player.First(v => v.email == vsMode.Player.email);
        Player enemyFromDB = legendWarsEntities.Player.First(v => v.email == vsMode.Opponent.email);
        vsMode.PlayerReference.Value = playerFromDB;
        vsMode.OpponentReference.Value = enemyFromDB;
        //adding records
        legendWarsEntities.SaveChanges();
        //deleting extra Opponent Object!!!
        Player[] playerToDel = legendWarsEntities.Player.Where(v => v.email == vsMode.Opponent.email).ToArray();
        legendWarsEntities.DeleteObject(playerToDel[1]);
        legendWarsEntities.SaveChanges();