2

Windowsフォームにあるデータを2つのテーブルに挿入する必要があります。Windows フォームのすべてのコントロールにデータ ソースを使用しています。Windows フォームから 2 つのテーブルに同時にデータを挿入する方法を教えてください。

私のテーブルはこんな感じです

**product table**

pid   salePrice  


**Product_tax table**

pid  taxid

送信ボタンをクリックすると、製品IDが自動生成され、salePriceはフォームから同時に保存する必要があり、製品IDとともにproduct_taxテーブルにも保存する必要がある税金を選択します。この時点から私を助けてください。

前もって感謝します。

4

2 に答える 2

6

そのため、これは理解できるように簡単な例です (これを行うには、より適切で洗練された方法があります)。

private void AddProducts(double salePrice, int taxValue)
{
    using (var ctx = new Entity())
    {

        Product prodObject = new Product
        {
            PId = //NEW ID,
            SalePrice = salePrice
        };

        Product_tax pTax = new Product_tax 
        {
            pid = prodObject.PId,
            taxid = taxValue
        };

        ctx.product.AddObject(prodObject);
        ctx.Product_tax .AddObject(pTax);

        ctx.SaveChanges();
    }
}

これは、ソリューションを微調整することでうまくいくはずです。

于 2013-08-09T08:17:56.147 に答える
0

非常に簡単です。テーブル間に定義されたリレーションシップがある場合、次のことができます。

using ( Entity EF = new Entity()){
    EF.addToProductTax(new ProductTax(){
        Product = new Product(){
            pid = //your generated Product id,
            salePrice = price
        },
        Tax = (FROM t in EF.tax where t.taxid == taxid select t);
    });
}

理解を容易にするために:

Product item = new Product();
item.salePrice = price;
// pid gets generated automatically !

Tax correspondingTax = (from t in EF.tax where t.taxid == taxid select t);

Product_Tax add = new Product_Tax;
add.Product = item;
add.Tax = correspondingTax;
EF.addToProductTax(add);

これは、2 つのテーブル間にリレーションシップが定義されている場合にのみ機能することに注意してください。それ以外の場合は、次のようにする必要があります。

EF.addToTax(new Tax(){
    taxid = taxid,
    // and all the other fields
});
EF.addToProducts(new Product(){
    pid = pid,
    salePrice = saleprice
});
EF.addToProductTax(new ProductTax(){
    pid = pid,
    taxid = taxid
});
于 2013-08-09T08:12:00.387 に答える