004.png (大小:1.9 K 下载次数:0)
最近比较闲,研究一下NHibernate.
我使用的是FluentNHibernate+NHibernate,这样不需要编写配置文件,上例子
数据库表结构和数据:
000.png (大小:9.8 K 下载次数:0)
创建工程,结构如下图:
001.png (大小:12.1 K 下载次数:0)
需要引入相关程序集,创建不同的目录
003.png (大小:4.1 K 下载次数:0)
Model 实体类文件夹
Mapping 映射类文件夹
DAL 数据访问层类文件夹
Common 通用类文件夹
002.png (大小:6.7 K 下载次数:0)
在Web.Config中配置连接字符串
代码说明:
实体类:UserRoles.cs
public class UserRoles
{
//NHibernate 的实体类属性必须是virtual
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
类名要和表名一致,也可不一致(在映射文件中可以声明)。
映射类:UserRoleMap.cs
public class UserRoleMap : ClassMap<UserRole>
{
public UserRoleMap()
{
this.Table("UserRoles");//表名
Id(u => u.Id);
Map(u => u.Name).Column("Name");
}
}
很简单吧
SessionFactory.cs类:
public class SessionFactory
{
public static ISessionFactory CurrentSessionFactory()
{
string connstring = "server=.//sqlexpress;uid=sa;database=mybookshop";//连接字符串
string path = HttpContext.Current.Server.MapPath("~/bin");//配置文件生成目录
return Fluently.Configure().Database(MsSqlConfiguration.MsSql2005.ConnectionString(connstring))
.Mappings(m => m.FluentMappings.AddFromAssembly(typeof(SessionFactory).Assembly).ExportTo(path)).BuildSessionFactory();
}
private static ISession session;
public static ISession Session
{
get
{
if (session == null)
session = CurrentSessionFactory().OpenSession();
return session;
}
}
}
数据访问层UserRolesDAL.cs:
public class UserRolesDAL
{
public static IList<UserRoles> GetUserRoles()
{
var session = SessionFactory.Session;
return session.CreateCriteria<UserRoles>().List<UserRoles>();
}
}
哈哈!非常简单.
表示层引用一下,就可以使用了
004.png (大小:1.9 K 下载次数:0)
OK!
在ASP.NET中使用NHibernate(第一季)
最新推荐文章于 2017-08-19 18:16:11 发布