具有 EF 4 c# 的外键

本文关键字:EF 具有 | 更新日期: 2023-09-27 18:36:51

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

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

因此,当我想向数据库添加字符时,必须设置外键"PlayerId"。

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

using (DatabaseModelContainer model = new DatabaseModelContainer())
{
    Character c = new Character();
    c.Player.Id = idPlayer;
    model.CharacterJeu.AddObject(c);
    model.SaveChanges();
}

谢谢你的回答。

具有 EF 4 c# 的外键

这里的奇怪事情

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
}

实体框架有一个名为Atta的方法,它可能就是你要找的。我认为它可用于更新现有对象上的外部实体。

MSDN:附加和分离对象