我正在使用EF6和SQL Server 2014。
我有类似以下简化模型:
public class Order
{
public int Id { get; set; }
public DateTime Created { get; set; }
public IEnumerable<OrderItem> OrderItems { get; set; }
}
public class OrderItem
{
public int Id { get; set; }
public int OrderId { get; set; }
public Order Order { get; set; }
public string ItemName { get; set; }
public int OrderItemNumber { get; set; }
}
Id属性是标准的自动增量主键。
OrderItem.OrderItemNumber属性唯一标识给定订单上下文中的OrderItem。
当插入新的OrderItem行时,需要为父订单分配下一个OrderItemNumber,类似于
SELECT COALESCE(MAX(OrderItemNumber),0) FROM dbo.OrderItems WHERE OrderId = 2
是否存在使用EF6 / SQL Server在插入行时自动分配OrderItemNumber的方法?
答案 0 :(得分:0)
虽然这证明了EF支持触发器的有趣学习经验(见https://github.com/NickStrupat/EntityFramework.Triggers)但我最终决定重新建模。
在这种情况下,我的问题是错误建模的结果。 OrderItemNumber属性是多余的,所以我删除了它;可以从Id值推断出OrderItems的创建顺序,并且没有必要允许重新排序。