0

这是从 BLToolkit http://bltoolkit.net/(S(ibvuiu3itvirtq550l4r0n55))/Doc.LinqAssociations.ashx获取的列表关联的示例用法

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

与产品类别名称一起返回

但是当我尝试这种方式时(如 linq2Sql)

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

类别返回空???

4

1 回答 1

0

尝试这个

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

我认为这也是如此。无论如何关于“like linq2Sql”,L2S 有延迟加载,Blt 没有

于 2011-08-25T13:35:41.370 回答