NHibernate with ASP.NET MVC 入门示例
2016-05-27 16:41
926 查看
目的:初步了解NHibernate的用法,包括数据库的CRUD, 基于ASP.NET MVC 项目模板
使用NuGet引入FluentNHibernate
创建实体类(POCO)
创建实体类对应的映射,继承ClassMap
使用SQL Server Management Studio创建空数据库
创建NHibernateHelper类,用来读取数据库配置文件并创建数据库表,重点!!!
在Web.config文件中添加新建数据库的配置
在ASP.NET MVC中添加新XXXController,以及Action方法
针对上面的Action方法创建简单View
运行项目,并访问这个Action 方法,就能创建数据库表。
查看并验证数据库表是否创建
修改第6步不创建的代码,防止每次请求此Action都重新创建数据库表
接下来就是ASP.NET MVC 的CURD创建了
去掉身份验证
相关依赖
多出的引用列表项
在Models文件夹中新建一个NHibernateHelper类,代码如下
这段代码我不解释,在后面的文章中会详细讲解。其中注释的一行,是NHibernate生成的创建数据库脚本。
打开Web.config,在 <connectionStrings></connectionStrings>节中添加如下代码:
新建一个CateogryController,Template选择Empty controller。在Index中添加如下代码:
鼠标右击index()方法,在弹出的菜单选择“”,新建Index的View,运行程序,NHibernate会自动创建好数据库的架构。
视图创建完后,运行项目,把地址导航到 http://localhost:36749/Category/Index,以触发代码来创建数据库表
创建成功后,将 schemaExport.Create(false, true); 改为schemaExport.Create(false, false);
这样不会每次都创建新的数据库了。
接下来要实现CRUD操作,对数据库的增查改删操作
步骤:
创建ASP.NET MVC 新项目使用NuGet引入FluentNHibernate
创建实体类(POCO)
创建实体类对应的映射,继承ClassMap
使用SQL Server Management Studio创建空数据库
创建NHibernateHelper类,用来读取数据库配置文件并创建数据库表,重点!!!
在Web.config文件中添加新建数据库的配置
在ASP.NET MVC中添加新XXXController,以及Action方法
针对上面的Action方法创建简单View
运行项目,并访问这个Action 方法,就能创建数据库表。
查看并验证数据库表是否创建
修改第6步不创建的代码,防止每次请求此Action都重新创建数据库表
接下来就是ASP.NET MVC 的CURD创建了
第一:创建ASP.NET MVC 项目
1、打开Visual Studio 2015 创建ASP.NET MVC 5项目,命名为PIS去掉身份验证
二、利用NuGit
相关依赖
多出的引用列表项
三、在Models文件夹里创建实体类 Category和 Product。
public class Category { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual string Description { get; set; } }
public class Product { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual string Description { get; set; } public virtual decimal UnitPrice { get; set; } public virtual int ReorderLevel{ get; set; } public virtual int Discontinued { get; set; } public virtual Category Category { get; set; } }
四、映射Model,在Models中分别创建CategoryMap和ProductMap类,让它们都继承自ClassMap<T>类,代码如下
using FluentNHibernate.Mapping; namespace PIS.Models { public class CategoryMap : ClassMap<Category> { public CategoryMap() { Id(x => x.Id); Map(x => x.Name).Length(50).Not.Nullable(); Map(x => x.Description); } } }
using FluentNHibernate.Mapping; namespace PIS.Models { public class ProductMap : ClassMap<Product> { public ProductMap() { Id(x => x.Id); Map(x => x.Name).Length(50).Not.Nullable(); Map(x => x.Description); Map(x => x.UnitPrice).Not.Nullable(); Map(x => x.ReorderLevel); Map(x => x.Discontinued); References(x => x.Category).Not.Nullable(); } } }
打开SQL Server Management Studio 创建一个空数据库 PIS
在Models文件夹中新建一个NHibernateHelper类,代码如下
using FluentNHibernate.Cfg; using System; using System.Collections.Generic; using System.Linq; using System.Web; using FluentNHibernate.Cfg.Db; using NHibernate; using NHibernate.Cfg; using NHibernate.Tool.hbm2ddl; namespace PIS.Models { public class NHibernateHelper { public static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("PISConn"))) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<ProductMap>()) .ExposeConfiguration(CreateSchema) .BuildSessionFactory(); } private static void CreateSchema(Configuration cfg) { var schemaExport = new SchemaExport(cfg); //schemaExport.SetOutputFile("c:\\abc.sql"); schemaExport.Create(false, true); } } }
这段代码我不解释,在后面的文章中会详细讲解。其中注释的一行,是NHibernate生成的创建数据库脚本。
打开Web.config,在 <connectionStrings></connectionStrings>节中添加如下代码:
<add name="PISConn" connectionString="Data Source=.;Initial Catalog=PIS;User ID=sa;Password=123456;Integrated Security=True" providerName="System.Data.SqlClient"/>
新建一个CateogryController,Template选择Empty controller。在Index中添加如下代码:
var factory = NHibernateHelper.CreateSessionFactory();
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using PIS.Models; namespace PIS.Controllers { public class CategoryController : Controller { // GET: Category public ActionResult Index() { var factory = NHibernateHelper.CreateSessionFactory(); return View(); } } }
鼠标右击index()方法,在弹出的菜单选择“”,新建Index的View,运行程序,NHibernate会自动创建好数据库的架构。
视图创建完后,运行项目,把地址导航到 http://localhost:36749/Category/Index,以触发代码来创建数据库表
创建成功后,将 schemaExport.Create(false, true); 改为schemaExport.Create(false, false);
这样不会每次都创建新的数据库了。
接下来要实现CRUD操作,对数据库的增查改删操作
相关文章推荐
- DataSet对象创建XML文档
- asp.net core 使用EntityFrameWork遇到的问题
- 利用windows的远程桌面完成Raspberry的首次系统安装
- Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 [转]
- org.aspectj.lang.JoinPoint-中文简要API 与pointcut expression表达式
- ASP.NET MVC
- MVC程序部署后页面指向login.aspx
- ASP.NET应用程序与页面生命周期
- ASP.NET 5 RC1 升级 ASP.NET Core 1.0 RC2 记录
- ASP.NET配置KindEditor文本编辑器图文教程
- 发布ASP.net网站问题
- 《解剖PetShop》之四:PetShop之ASP.NET缓存
- 基于@AspectJ配置Spring AOP之一--转
- 《解剖PetShop》之四:PetShop之ASP.NET缓存
- ASP.NET配置KindEditor文本编辑器图文教程
- 树莓派Raspberry Pi使用小记
- <AOP:aspectj-autoproxy/>
- ASP.NET基本对象的认识
- asp.net常用字符串函数
- Asp.Net编写Web服务(WebService)与SQL2005连接操作