2011-08-17 57 views
0

這裏是清單協會從BLToolkit http://bltoolkit.net/(S(ibvuiu3itvirtq550l4r0n55))/Doc.LinqAssociations.ashxBLToolkit協會的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; 
    } 

[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; 
     } 

當我嘗試

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); 
      } 
     } 

收益與產品類別名稱取一個例子使用

但是當我嘗試THIS WAY(如LINQ2SQL)

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

類別返回null ????

回答

0

試試這個

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

我認爲這確實是相同的。 無論如何說「像linq2Sql」,L2S有延遲加載,Blt不會