简体   繁体   中英

Insert into a One to many relationship, two foreign keys from same table. Entity framework 3.5

在此处输入图像描述
In my scenario I have a many to many relationship with single table. So in Player_VsMode I have two foreign keys of Player table. One is for Player and second for Opponent. When I am trying to insert in the table Player_VsMode. Insertion of data in Player_vsMode is all fine but in Player it adds a new row of opponent Object . And this is not making sense to me why the Hell EntityFramework adding this new row of Opponent! My code is

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

    }

I DO NOT RECOMMEND THIS Just did a work around to say to Project Manager that it's Working:).

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM