在我的示例中,我試圖創建一個具有對現有對象的引用的新對象。我發現自己不得不從數據庫中檢索完整的對象,以便從我的新對象中引用它們。是否有一種更簡單的方法將關係分配給實體框架中的新對象?
道歉的代碼中的任何小錯誤 - 我從內存工作 - 我沒有我的代碼與我。
我的視圖模型包含對象本身,我的兩個參考ID,以及被引用的對象的選擇列表,所以我可以綁定到一個下拉:
public class GameEditViewModel
{
public Game MyGame { get; set; }
public int HomeTeamId { get; set; }
public int AwayTeamId { get; set; }
public SelectList<Team> { get; set; }
}
我設置和獲取一切都完美的罰款,並對象被完全填充,當我拿回來,但問題是當我試圖挽救這個新的遊戲:
public Game AddGame(GameEditViewModel gameToSave)
{
gameToSave.MyGame.HomeTeam =
context.GetObjectByKey(new EntityKey(context.DefaultContainerName+".Team", "Id", gameToSave.HomeTeamId)) as Team;
context.Attach(gameToSave.MyGame.HomeTeam); // I think I needed this line
gameToSave.MyGame.AwayTeam =
context.GetObjectByKey(new EntityKey(context.DefaultContainerName+".Team", "Id", gameToSave.AwayTeamId)) as Team;
context.Attach(gameToSave.MyGame.AwayTeam);
context.AddToGame(MyGame);
context.SaveChanges();
}
在這裏您將看到的問題 - 我做了兩個額外的數據庫查詢檢索模式,所以我可以綁定到他們。真的,我應該只需要Id。
如果我只設置了HomeTeam.Id和AwayTeam.Id屬性,上下文認爲我添加了一條新記錄並且抱怨Team對象所需的所有引用都沒有設置。
我認爲有一個更好/更有效的方法來做到這一點,但我對EF很新。任何人都可以啓發我嗎?
哇,真的嗎?男人......我怎麼錯過那個......? – Damovisa 2010-02-26 02:38:54
@Damovisa:對不起,但我不知道:) – LukLed 2010-02-26 02:44:47
我想我只是假設它做到了。我會確認何時回家,但我相信你是對的。謝謝 :) – Damovisa 2010-02-26 02:45:58