2

製品を DB に追加しようとしています。別のテーブルからカテゴリ ID を取得する必要がありますが、どうすればよいかわかりません。

基本的に、私はすべての異なるカテゴリを含むテーブルを持っており、外部 Web サービスからテキストを渡す必要があります。これにより、DB がヒットし、本来の猫の ID が取得されます。

以下は私が持っているコードです:

using (aboDataDataContext dc = new aboDataDataContext())
{
    var match = (from t in dc.tweProducts
                 where t.sku == productSku
                 select t).FirstOrDefault();

    if (match == null)
    {
        tweProduct tprod = new tweProduct()
        {
            sku = p.productcode,
            categoryId = Convert.ToInt32(catid),
            title = p.name,
            brand = p.manufacturer,
            description = p.description,
            twePrice = p.price,
            weight = decimal.TryParse(p.size, out weight) == true ? (int?)weight : null,
            size = decimal.TryParse(p.size, out weight) == true ? (int?)weight : null,
            contry = p.country,
            region = p.region,
            vintage = int.TryParse(p.vintage, out vintage) == true ? (int?)vintage : null,
            strength = p.strength,
            bottler = p.bottler,
            age = int.TryParse(p.age, out age) == true ? (int?)age : null,
            caskType = p.casktype,
            series = p.series,
            flavour = p.flavour,
            stock = p.freestock,
            tweUpdated = false,
            stockUpdated = false,
            priceUpdated = false,
            dataUpdated = false,
            imgPublished = false,
            lastUpdated = DateTime.Now,
        };
    }
}

基本的に、Web サービスからのカテゴリは Category_1 (たとえば) に渡されます。これを DB に渡して、Category_1 の ID (1 など) を取得し、それをテーブルに挿入する必要があります。

4

2 に答える 2

2

Webサービスからnullではなく有効な応答を取得していると仮定して、 FirstOrDefault()を使用する必要があります。

         categoryId = Convert.ToInt32((from c in dc.Categories
                                 where c.Name == p.category
                                 select c.Id).FirstOrDefault()),
于 2012-06-25T15:11:08.103 に答える
1

FirstOrDefault/First/SingleOrDefault/Single は述語を受け入れます。

categoryId = dc.Categories.Single(c => c.Name == p.category).Id;
于 2012-06-25T15:14:24.713 に答える