2

主キーとして int を持つエンティティがあり、これは store generatedpattern = none に設定されているため、クライアント側に ID を提供します。

このエンティティには、ナビゲーションと外部キー ID との関連付けを介して参照する子エンティティがあります。

新しい親エンティティを作成して子を追加し、親エンティティの主キーを設定して保存すると、保存後に子の外部キーが修正され、データベースに保持されません。

例えば

    engine = new Engine();
    part = new Part();
    engine.Parts.Add(part);
    engine.Id = 6;
    engineRepository.Save(engine);

保存は単純に

Context.Engines.AddObject(entity);
Context.SaveChanges();

保存後、"part" の外部キーは "EngineId" = 6 になりますが、データベースでは "EngineId" = 0 になります。つまり、保存後に修正が行われたように見えます。

ここで何が欠けていますか?エンジンの store generatedpattern が ID の場合、すべて正常に動作します。

4

2 に答える 2

0

この場合の解決策は、グラフを 2 回保存することです。1 回は修正を作成するため、もう 1 回は修正を保存するためです。これは素晴らしい解決策ではなく、なぜそれをしなければならないのかはまだわかりませんが、少なくとも EF に ID 解決を任せることができるということです。

于 2013-07-18T12:46:00.693 に答える