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

ここでorderId、 とnewQtyは、それぞれ注文の ID と追加される数量を含む 2 つの変数です。

于 2012-09-21T20:59:16.113 に答える