Remove を使用してコレクションから項目を削除できるように、Entity Framework で識別関係を機能させようとしています。
次のようなテストを作成しました。
public class OrderLine{
[Key, Column(Order = 0)]
public int OrderLineId { get; set; }
[Key, ForeignKey("Order"), Column(Order = 1)]
public int OrderId{ get; set; }
public virtual Order Order{ get; set; }
[ForeignKey("Product")]
public int ProductId { get; set; }
public virtual Product Product { get; set; }
public int Number { get; set; }}
次のような OrderLine を追加しようとすると:
var order=_orderRepository.Find(1);
var NewOrderLine= new OrderLine()
{
Number = 1,ProductId= 2
};
order.OrderLines.Add(NewOrderLine);
_orderRepository.InsertOrUpdate(order);
_orderRepository.Save();
エラーが発生します
IDENTITY_INSERT が OFF に設定されている場合、テーブル 'OrderLines' の ID 列に明示的な値を挿入できません。
テーブルを見ると、SQL には OrderId と OrderLineId に対する主キーがあります。また、OrderLineId のみが ID として設定されます。したがって、値を挿入しようとしているに違いありませんが、挿入しようとしているように見える唯一の値は 0 です。
次を使用してテーブルに挿入できるアイデアはすべて次のとおりです。
INSERT INTO [OrderLines]
([ProductId ]
,[Number]
,[OrderId])
VALUES
(2
,1
,1)