我的问题是, 如何在添加新数据之前首先验证PoDetail表中的数量 如果PoOrder表中的数量超过? 如果我正确,这是我想要创建的业务规则。 我正在使用asp.net mvc 4,EF代码和存储库模式。
这是一个示例数据。
INSERT INTO PoOrders
SELECT 1,'PO123',5000
INSERT INTO PoDetails
SELECT 1,1,2500
UNION ALL
SELECT 2,1,2000
如果我尝试添加新的PoDetail(例如数量为1000),它必须显示一个 消息或阻止添加新记录。
POCO课程
public class PoOrder
{
[Key]
public int PoID { get; set; }
public string PoNumber { get; set;}
public int PoQty {get; set;}
}
public class PoDetail
{
[Key]
public int ID { get; set; }
public int Po_ID {get; set;}
public int ReleaseQty { get; set;}
[ForeignKey("Po_ID")]
public virtual PoOrder PoOrders { get; set; }
}
非常感谢任何提示或解决方案。感谢
答案 0 :(得分:0)
首先,PoOrder
似乎更适合拥有PoDetails
个集合。如果你改变它,这将做你想要的:
var query =
from o in PoOrders
where o.PoId == orderId
select new { o.PoQty, SumQty = o.PoDetails.Sum(d => d.ReleaseQty) };
var orderData = q.Single();
if (orderData.PoQty < orderData.SumQty + newQty)
// message
其中orderId
和newQty
是两个变量,分别包含订单的ID和要添加的数量。