0

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

我和一个玩家有一个小游戏。这个玩家可以在游戏中拥有一些角色。

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

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

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

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

谢谢你的回答。

4

2 回答 2

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
}
于 2012-06-11T12:48:40.153 回答
0

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

MSDN:附加和分离对象

于 2012-06-11T14:18:53.707 回答