0

次のEFモデルがあります。

public class Order
{
    public string Id { get; set; }

    public IList<OrderLine> Lines { get; set; }

    ...
}

public class OrderLine
{
    public string OrderId { get; set; }
    public int Position { get; set; }

    ...
}

の主キーはとOrderLineでできています:OrderIdPosition

HasKey(l => new {l.Position, l.OrderId});

この新しいエンティティを追加するまで、これまでのところすべてうまくいきました。

public class OrderLineReturn
{
    public string Id { get; set; }

    ...
}

public class OrderLine
{
    public string OrderId { get; set; }
    public int Position { get; set; }

    public IList<OrderLineReturn> LineReturns { get; set; }

    ...
}

そして今、注文を削除するときにエラーが発生します:

DELETE instruction is in conflict with the REFERENCE constraint "FK_dbo.OrderLineReturn_dbo.OrderLine_OrderLine_Position_OrderLine_OrderId"

誰かが問題を理解するのを手伝ってくれますか?

4

2 に答える 2

0

遅延読み込みを有効にするには、ILIst プロパティを仮想としてマークする必要があると考えています。また、OrderID を参照する代わりに、OrderLine で仮想注文プロパティを作成する必要があるのではないかと思います。

于 2013-05-22T09:56:37.257 に答える
0

私が正しいかどうかはわかりませんが、最初に OrderLines を削除せずに Order を削除しようとすると、同じ問題が発生すると思います。

問題は、OrderLineReturn が OrderLine への参照を持つことです。最初に OrderLineReturn を削除せずに OrderLine を削除すると、そのエラーが発生します。

カスケード削除を有効にできると思いますが、常にリスクがあります。

よろしく、

于 2013-05-22T10:22:07.970 に答える