Linq 在加入过程后更新不同的表

Tar*_*tar 2 c# sql linq asp.net join

我使用 linq join 组合了我的 3 个表。之后,我想使用从 webform 获取的数据更新此表。我怎样才能做到这一点 ?我的实现如下

public void updateShoes(Shoe shoe) 
{
    var query = from b in db.BrandTbls.AsQueryable()
                join m in db.ShoeModelTbls on b.BrandID equals m.BrandID
                join s in db.ShoeTbls on m.ModelID equals s.ModelID
                where shoe.ShoeID == s.ShoeID 
                orderby m.ModelName
                select new 
                { 
                    s.ShoeID,
                    s.Size,
                    s.PrimaryColor,
                    s.SecondaryColor,
                    s.Quantity,
                    m.ModelName,
                    m.Price,
                    b.BrandName
                };
}
Run Code Online (Sandbox Code Playgroud)

sal*_*han 5

尽管您的方法现在有点不清楚(例如,我们不知道您要更新哪些实体),但是您可以像这样修改代码,

public void updateShoes(Shoe shoe) 
{
    var query = from b in db.BrandTbls.AsQueryable()
            join m in db.ShoeModelTbls on b.BrandID equals m.BrandID
            join s in db.ShoeTbls on m.ModelID equals s.ModelID
            where shoe.ShoeID == s.ShoeID 
            orderby m.ModelName
            select new 
            { 
                Shoe = shoe, Brand = b, Model = m
            };

    foreach(var o in query)
    {
        o.Shoe.ColorName = "Black";
        o.Brand.BrandName = "New Branding";
        o.Model.ModelName = "Something else";
    }

    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

您可以选择整个实体,而不是从每个实体中选择选定的属性。然后你可以像我上面所做的那样在循环中更新每个实体。