2

我正在尝试将产品添加到我的数据库中,我需要从另一个表中获取类别 ID,但是我不确定我该怎么做?

基本上,我有一个包含所有不同类别的表,我需要从我的外部 Web 服务传递文本,然后它会访问数据库并获取它打算在其中的猫的 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 中传递的(例如),我需要将它传递给我的数据库,以获取 Category_1 的 ID(比如它的 1),然后将其插入我的表中。

4

2 回答 2

2

您需要使用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 回答