我在EF 4.0中遇到外键问题。
我与玩家进行了一场小游戏。这个玩家可以在游戏中拥有一些角色。
所以,当我想在数据库中添加一个字符时,我必须设置外键“PlayerId”。
这是我的代码,但在上下文模型中添加对象时会终止:
using (DatabaseModelContainer model = new DatabaseModelContainer())
{
Character c = new Character();
c.Player.Id = idPlayer;
model.CharacterJeu.AddObject(c);
model.SaveChanges();
}
感谢您的回答。
答案 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的方法,可能就是您正在寻找的方法。我认为它可以用于更新现有对象上的外来实体。