2012-04-11 9 views
0

enter image description here
私のシナリオでは、単一テーブルとの多対多の関係があります。 Player_VsModeにはPlayerテーブルの2つの外部キーがあります。 1つはPlayerのためのもので、もう1つは敵対者のためのものです。 Player_VsModeテーブルに挿入しようとしています。 Player_vsModeにデータを挿入すると、すべてになりますが、プレーヤーには、新しいオブジェクト行が追加されます。そして、これはなぜ私には意味がありません地獄EntityFrameworkは、この新しい行の対戦相手を追加!私のコードは同じ表の2つの外部キーを1対多の関係に挿入します。エンティティフレームワーク3.5

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(); 

    } 
+0

Player_VsModeにOpponentIdとPlayerIdをマップして設定することができます。 –

答えて

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(); 
関連する問題