代码改变世界

Visual Entity 使用(二)创建一对多关系

2011-08-23 18:00  麦舒  阅读(734)  评论(0编辑  收藏  举报

1、将 Products 表拖放到设计器上

 

2、Visual Entity 将会自动生成下面的代码

DataContext 代码

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 实体类代码

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 实体类

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

运行结果如下: