1

我的问题是,如果 PoOrder 表中的数量超出,如何在添加新数据之前先验证 PoDetail 表中的数量?如果我是对的,这是我想要创建的业务规则。我正在使用 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; }     
 }

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

4

1 回答 1

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 和要添加的数量。

于 2012-09-21T20:59:16.113 回答