1、将 Products 表拖放到设计器上
2、Visual Entity 将会自动生成下面的代码
DataContext 代码

publicpartialclass NorthwindDataContext : NHibernate.Linq.NHibernateContext
{
public NorthwindDataContext(NHibernate.ISession session) :
base(session)
{
}
public NorthwindDataContext() :
base(CreateSession())
{
}
public System.Linq.IOrderedQueryable<Category> Categories
{
get
{
returnthis.Session.Linq<Category>();
}
}
public System.Linq.IOrderedQueryable<Product> Products
{
get
{
returnthis.Session.Linq<Product>();
}
}
publicstatic ISessionFactory CreateSessionFactory()
{
Configuration cfg;
cfg =new Configuration();
cfg.Configure();
ISessionFactory factory;
factory = cfg.BuildSessionFactory();
return factory;
}
publicstatic ISession CreateSession()
{
ISession session;
ISessionFactory factory;
factory = CreateSessionFactory();
session = factory.OpenSession();
return session;
}
}
Category 实体类代码

publicpartialclass Category
{
privateint _CategoryID;
privatestring _CategoryName;
privatestring _Description;
privatebyte[] _Picture;
private IList<Product> _Products;
publicvirtualint CategoryID
{
get
{
returnthis._CategoryID;
}
set
{
this._CategoryID = value;
}
}
publicvirtualstring CategoryName
{
get
{
returnthis._CategoryName;
}
set
{
this._CategoryName = value;
}
}
publicvirtualstring Description
{
get
{
returnthis._Description;
}
set
{
this._Description = value;
}
}
publicvirtualbyte[] Picture
{
get
{
returnthis._Picture;
}
set
{
this._Picture = value;
}
}
publicvirtual IList<Product> Products
{
get
{
returnthis._Products;
}
set
{
this._Products = value;
}
}
}
Product 实体类

publicpartialclass Product
{
privateint _ProductID;
privatestring _ProductName;
private System.Nullable<int> _SupplierID;
private System.Nullable<int> _CategoryID;
privatestring _QuantityPerUnit;
private System.Nullable<float> _UnitPrice;
private System.Nullable<short> _UnitsInStock;
private System.Nullable<short> _UnitsOnOrder;
private System.Nullable<short> _ReorderLevel;
privatebool _Discontinued;
private Category _Category;
publicvirtualint ProductID
{
get
{
returnthis._ProductID;
}
set
{
this._ProductID = value;
}
}
publicvirtualstring ProductName
{
get
{
returnthis._ProductName;
}
set
{
this._ProductName = value;
}
}
publicvirtual System.Nullable<int> SupplierID
{
get
{
returnthis._SupplierID;
}
set
{
this._SupplierID = value;
}
}
publicvirtual System.Nullable<int> CategoryID
{
get
{
returnthis._CategoryID;
}
set
{
this._CategoryID = value;
}
}
publicvirtualstring QuantityPerUnit
{
get
{
returnthis._QuantityPerUnit;
}
set
{
this._QuantityPerUnit = value;
}
}
publicvirtual System.Nullable<float> UnitPrice
{
get
{
returnthis._UnitPrice;
}
set
{
this._UnitPrice = value;
}
}
publicvirtual System.Nullable<short> UnitsInStock
{
get
{
returnthis._UnitsInStock;
}
set
{
this._UnitsInStock = value;
}
}
publicvirtual System.Nullable<short> UnitsOnOrder
{
get
{
returnthis._UnitsOnOrder;
}
set
{
this._UnitsOnOrder = value;
}
}
publicvirtual System.Nullable<short> ReorderLevel
{
get
{
returnthis._ReorderLevel;
}
set
{
this._ReorderLevel = value;
}
}
publicvirtualbool Discontinued
{
get
{
returnthis._Discontinued;
}
set
{
this._Discontinued = value;
}
}
publicvirtual Category Category
{
get
{
returnthis._Category;
}
set
{
this._Category = value;
}
}
}
运行下面的代码:
var dc =new NorthwindDataContext();
var categories = dc.Categories.ToList();
foreach (var category in categories)
{
foreach (var product in category.Products)
{
Console.WriteLine(product.ProductName);
}
Console.WriteLine();
}
运行结果如下: