以下是从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);
}
}
返回产品CategoryName
但是当我尝试这种方式时(如linq2Sql)
var db1 = new NorthwindDB();
db1.Product.First().Category.CategoryName;
类别返回null ????
答案 0 :(得分:0)
试试这个
var db1 = new NorthwindDB();
db1.Product.Select(prod => prod.Category.CategoryName).First();
我认为这样做也是如此。 无论如何关于“喜欢linq2Sql”,L2S有延迟加载,Blt没有