我试图让识别关系在实体框架中工作,这样我就可以使用 Remove 从他们的集合中删除项目。
我创建了一个测试,如:
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”中插入标识列的显式值。
当我查看表时,SQL 在 OrderId 和 OrderLineId 上有一个主键。也只有 OrderLineId 被设置为身份。所以它必须尝试插入一个值,但它似乎试图插入的唯一值是 0。
我可以使用以下方法插入表格的任何想法:
INSERT INTO [OrderLines]
([ProductId ]
,[Number]
,[OrderId])
VALUES
(2
,1
,1)