BLToolkit Ассоциация Линк - PullRequest
       25

BLToolkit Ассоциация Линк

0 голосов
/ 17 августа 2011

Вот пример использования списочных ассоциаций, взятых из 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;
    }

AND

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

Возвращается сproductName

НО, КОГДА Я ПОПЫТАЮСЬ НА ЭТОМ СПОСОБЕ (как linq2Sql)

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

Категория возвращает значение null ????

1 Ответ

0 голосов
/ 25 августа 2011

Попробуйте это

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

Думаю, это то же самое.В любом случае, насчет "like linq2Sql", L2S загружается медленно, Blt не

...