2011-07-05 15 views
3

解決策を探していて、良い情報が見つからない。多くのEFドキュメントは古くなっています。ここに私の問題があります。Entity Framework:外部キー制約による依存関係

ParentIDナビゲーションプロパティを使用して子に親を追加すると、すべて正常に動作します。

私は子供のリストを経由して親に子を追加し、子供が既存している場合、私はこの例外を取得:

DbUpdateException: に依存 操作のための有効な順序を決定することができません。外部キー制約、モデル の要件、またはストアで生成された の値に対して、 の依存関係が存在する可能性があります。

私は子供のリストを経由して親に子を追加し、子供が(も永続化する必要があります)新規の場合、私はこの例外を取得:

DbUpdateConcurrencyException:ストア UPDATE、INSERT、または削除ステートメント が予期しない行数 (0)に影響しました。エンティティがロードされてから、エンティティが変更されたか、または削除された可能性があります( )。 ObjectStateManagerエントリを更新します。

Node.cs

public class Node 
{ 
    public long ID { get; private set; } 
    public long? ParentID { get; set; } 
    public List<Node> Children { get; set; } 
} 

protected override void OnModelCreating(DbModelBuilder mb) 
{ 
    mb.Entity<Node>() 
    .HasMany(c => c.Children) 
    .WithOptional() 
    .HasForeignKey(c => c.ParentID); 
} 

答えて

0

があなたの代わりに私が持っていたList<Node>

+0

私は動的プロキシを必要としません。私はバーチャルでプロキシをオフにしてみるつもりだが、それが役に立たないと思う。これは遅延読み込みの問題ではありません(私が思う限り)。私は明日更新する必要があります。 – OpticalDelusion

0

のあなたの子供の財産

public virtual ICollection<Node>を作ったことがあります関連DbContext.cs同じ問題は、最高の解決策は何かわからないが、私はSaveChangesを呼び出そうとした。 context.SaveChanges()を呼び出して、子を新しく作成されたエンティティに追加します。

関連する問題