C# 带EF 4 c的外键#
EF 4.0中的外键有问题 我和一个玩家玩了一个小游戏。这个玩家在游戏中可以有一些角色 所以,当我想向数据库添加一个字符时,我必须设置外键“PlayerId” 这是我的代码,但在上下文模型中添加对象时终止:C# 带EF 4 c的外键#,c#,entity-framework,key,C#,Entity Framework,Key,EF 4.0中的外键有问题 我和一个玩家玩了一个小游戏。这个玩家在游戏中可以有一些角色 所以,当我想向数据库添加一个字符时,我必须设置外键“PlayerId” 这是我的代码,但在上下文模型中添加对象时终止: using (DatabaseModelContainer model = new DatabaseModelContainer()) { Character c = new Character(); c.Player.Id = idPlayer; model.Ch
using (DatabaseModelContainer model = new DatabaseModelContainer())
{
Character c = new Character();
c.Player.Id = idPlayer;
model.CharacterJeu.AddObject(c);
model.SaveChanges();
}
谢谢你的回答。这里有些奇怪的事情
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那样管理FK。您必须管理引用(导航)属性
你可以那样做
Character c = new Character{
Player = model.GetPlayerByid(idPlayer);//or something like that
}
实体框架有一个名为Attach的方法,这可能就是您正在寻找的方法。我认为它可以用于更新现有对象上的外部实体
MSDN:您是否有任何错误或什么?您能描述一下您所遇到的错误吗?然而,最常用的添加角色的方法是通过玩家。即使用
idPlayer
从modelcontainer中查找播放器。然后player.Characters.Add(c)
;