0

EF4.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

Entity Frameworkには、あなたが探しているものかもしれないAttachと呼ばれるメソッドがあります。既存のオブジェクトの外部エンティティを更新するために使用できると思います。

MSDN:オブジェクトのアタッチとデタッチ

于 2012-06-11T14:18:53.707 に答える