NHibernate使用类来映射到表或视图中。Plain Old CLR Object对于持久性类,创建(POCO,有时也称为普通普通CLR对象)是一种很好的做法。POCO的数据可通过标准.NET属性机制访问,从而使内部表示不受公共可见界面的影响。
namespace Project { public class Customer { public virtual string Id { get; set; } public virtual string Name { get; set; } public virtual char Sex { get; set; } public virtual float Weight { get; set;} public virtual bool Active { get; set;} public virtual DateTime Birthday { get; set;} public Customer() { } } }
NHibernate对属性类型的使用没有限制:可以映射所有.NET类型和基元(例如字符串,char和DateTime),包括来自System.Collections和System.Collections.Generics命名空间的类。您还可以映射实体之间的关系,并具有引用另一实体类型的属性。您可以将它们映射为值,值的集合或与其他实体的关联。Id此处命名的属性是一个特殊属性,代表该类的数据库标识符(主键),强烈建议为Cat之类的实体使用。NHibernate只能在内部使用标识符,而不必在类上声明它们,但是我们将失去应用程序体系结构的某些灵活性。
持久性类无需实现任何特殊接口,我们也不必从特殊的根持久性类继承子类。NHibernate还不使用任何构建时处理,例如IL操纵;它仅依靠.NET反射和运行时类增强。因此,无需依赖NHibernate的POCO类,我们可以将其映射到数据库表或视图。
为了使上述运行时类增强正常工作,NHibernate要求将实体类的所有公共属性声明为virtual。实体类必须具有无参数的构造函数(protected或public),NHibernate才能创建对象。