2011-08-17 12 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; 
    } 

と私は、製品区分名と

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

戻りを試す

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

から取られたリスト協会の使用例である

私は

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

(linq2Sqlのような)THIS WAYをしようとすると、カテゴリーはnullを返します????

答えて

0

は、私は、これは同じことを考えて、この

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

試してみてください。 とにかく "like linq2Sql"について、L2Sは遅延ロードを持っていますが、Bltはありません