项目结构如图:
Product.cs模型类
public class Product
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual string Category { get; set; }
public virtual int Price { get; set; }
}
实体映射文件Product.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NHExample"
namespace="NHExample.Domain">
<class name="Product" table="products">
<id name="Id">
<generator class="guid" />
</id>
<property name="Name" />
<property name="Category" />
<property name="Price" />
</class>
</hibernate-mapping>
全局配置文件hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Data Source=.\SQLINSTANCE;Initial Catalog=WhiskeyDemo;Persist Security Info=True;User ID=sa;Password=123456</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="query.substitutions">true=1;false=0</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
Program.cs主程序代码
class Program
{
static void Main(string[] args)
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof(Domain.Product).Assembly);
var sessions = cfg.BuildSessionFactory();
var sess = sessions.OpenSession();
new SchemaExport(cfg).Create(true, true);
var product = new Domain.Product
{
Name = "Some C# Book",
Price = 500,
Category = "Books"
};
sess.Save(product);
sess.Flush();
IQuery q = sess.CreateQuery("FROM Product");
var list = q.List<Domain.Product>();
list.ToList().ForEach( p => Console.WriteLine( p.Name ));
Console.ReadLine();
}
}
运行结果如图:
生成的数据库