使用EF 4 c#的外键

时间:2012-06-11 12:41:42

标签: c# entity-framework key

我在EF 4.0中遇到外键问题。

我与玩家进行了一场小游戏。这个玩家可以在游戏中拥有一些角色。

所以,当我想在数据库中添加一个字符时,我必须设置外键“PlayerId”。

这是我的代码,但在上下文模型中添加对象时会终止:

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

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

感谢您的回答。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

实体框架有一个名为Attach的方法,可能就是您正在寻找的方法。我认为它可以用于更新现有对象上的外来实体。

MSDN:Attaching and Detaching Objects