2010-03-13 8 views
0

Comment mettre à jour deux tables en même temps en utilisant Linq-to-SQL?Mise à jour de plusieurs tables en même temps dans Linq-to-SQL

var z = from a in db.Products 
       join b in db.ProductSubcategories on 
        a.ProductSubcategoryID equals b.ProductSubcategoryID 
       join d in db.ProductCategories on 
        b.ProductCategoryID equals d.ProductCategoryID 
       select new { ProductName = a.Name, ProductCategory = d.Name,  
          ProductSubCategory = b.Name, Cost = a.StandardCost, 
          discontinuedDate = a.DiscontinuedDate,  
          ProductId=a.ProductID }; 

Répondre

2

Vous devez mettre à jour les dossiers individuels de chaque table puis exécutez db.SubmitChanges();

Dans votre requête la sortie est un type anonyme, pas un type de table relié au contexte db.

Si vous pensez en termes de SQL, linq2sql fonctionne à peu près de la même manière. Vous pouvez sélectionner un ensemble d'enregistrements avec une jointure, mais vous ne pouvez pas le mettre à jour directement. Vous devez le décomposer et modifier les entrées directement dans Products, ProductCategories et ProductSubCategories, ce qui équivaut aux tables de votre base de données.

Si vous souhaitez modifier un produit dans Products, vous devez alors modifier les propriétés de ce type, et non le type anonyme (type joint).

Questions connexes