2012-06-11 77 views
0

我在EF 4.0中遇到外鍵問題。帶EF 4 c的外鍵#

我有一個與玩家的小遊戲。該玩家可以在遊戲中擁有一些角色。

所以,當我想添加一個字符到數據庫時,我必須設置外鍵「PlayerId」。

這是我的代碼,但在上下文模型添加對象時殺:

using (DatabaseModelContainer model = new DatabaseModelContainer()) 
{ 
    Character c = new Character(); 
    c.Player.Id = idPlayer; 

    model.CharacterJeu.AddObject(c); 
    model.SaveChanges(); 
} 

感謝的答案。

+3

您是否收到任何錯誤或什麼? – Shyju

+0

你能否描述你得到的錯誤?然而,添加角色的最常用方法是通過播放器。 I.e使用'idPlayer'從modelcontainer中找到'player'。然後'player.Characters.Add(c)'; –

回答

1

這裏

Character c = new Character(); 
c.Player.Id = idPlayer;//But instance c has no Player (well, I don't know the constructor of Character, but I may imagine there's no new Player() inside) 

奇怪的事情順便說一句,你似乎有模型,你不必爲你做管理FK。您必須管理參考(導航)屬性。

你可以這樣做。

Character c = new Character{ 
    Player = model.GetPlayerByid(idPlayer);//or something like that 
} 
0

實體框架有一個名爲Attach的方法,可能是您正在尋找的方法。我認爲它可以用於更新現有對象上的外部實體。

MSDN:Attaching and Detaching Objects