2011-08-17 3 views
0

Voici un exemple d'utilisation des associations de liste provenant BLToolkit http://bltoolkit.net/(S(ibvuiu3itvirtq550l4r0n55))/Doc.LinqAssociations.ashxBLToolkit Association Linq

[TableName("Categories")] 

public class Category 
    { 
     [PrimaryKey, Identity] public int CategoryID; 
     [NotNull]    public string CategoryName; 
           public string Description; 
           public Binary Picture; 

     [Association(ThisKey="CategoryID", OtherKey="CategoryID")] 
     public List<Product> Products; 
    } 

ET

[TableName("Products")] 

public abstract class Product 
     { 
      [PrimaryKey, Identity]      public int  ProductID; 
      [NotNull]         public string ProductName; 
                 public int?  SupplierID; 
                 public int?  CategoryID; 
                 public string QuantityPerUnit; 
                 public decimal? UnitPrice; 
                 public short? UnitsInStock; 
                 public short? UnitsOnOrder; 
                 public short? ReorderLevel; 
      [MapField(IsInheritanceDiscriminator=true)] public bool  Discontinued; 

      [Association(ThisKey="ProductID", OtherKey="ProductID")] 
      public List<OrderDetail> OrderDetails; 

      [Association(ThisKey="CategoryID", OtherKey="CategoryID", CanBeNull=false)] 
      public Category Category; 

      [Association(ThisKey="SupplierID", OtherKey="SupplierID", CanBeNull=false)] 
      public Supplier Supplier; 
     } 

Lorsque je tente

using (var db = new NorthwindDB()) 
     { 
      var query = 
       from p in db.Product 
       select new 
       { 
        p.Category.CategoryName, 
        p.ProductName 
       }; 

      foreach (var item in query) 
      { 
       Console.WriteLine(item); 
      } 
     } 

retour avec le produit CategoryName

mais lorsque je tente de cette façon (comme linq2sql)

var db1 = new NorthwindDB(); 
    db1.Product.First().Category.CategoryName; 

Catégorie retourne null ????

Répondre

0

Essayez cette

var db1 = new NorthwindDB(); 
db1.Product.Select(prod => prod.Category.CategoryName).First(); 

Je pense que cela fait la même chose. En tout cas sur le "comme linq2Sql", L2S a chargement paresseux, Blt ne