如何验证PO详细数量是否超过PoOrder数量?

时间:2012-09-21 12:31:40

标签: entity-framework ef-code-first

我的问题是, 如何在添加新数据之前首先验证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; }     
 }

非常感谢任何提示或解决方案。感谢

1 个答案:

答案 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

其中orderIdnewQty是两个变量,分别包含订单的ID和要添加的数量。