• NHibernate with ASP.NET MVC 入门示例


    目的:初步了解NHibernate的用法,包括数据库的CRUD, 基于ASP.NET MVC 项目模板

    步骤:

    1. 创建ASP.NET MVC 新项目
    2. 使用NuGet引入FluentNHibernate
    3. 创建实体类(POCO)
    4. 创建实体类对应的映射,继承ClassMap
    5. 使用SQL Server Management Studio创建空数据库
    6. 创建NHibernateHelper类,用来读取数据库配置文件并创建数据库表,重点!!!
    7. 在Web.config文件中添加新建数据库的配置
    8. 在ASP.NET MVC中添加新XXXController,以及Action方法
    9. 针对上面的Action方法创建简单View
    10. 运行项目,并访问这个Action 方法,就能创建数据库表。
    11. 查看并验证数据库表是否创建
    12. 修改第6步不创建的代码,防止每次请求此Action都重新创建数据库表
    13. 接下来就是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操作,对数据库的增查改删操作

  • 相关阅读:
    样本间相似度/距离的计算方法总结
    package.json字段全解
    使用Charles对Https请求进行抓包
    URI和URL的区别
    webstorm常用快捷键
    HTML中判断手机是否安装某APP,跳转或下载该应用
    Git 常用命令大全
    vue的测试(Vue.js devtool)
    js求两个数的最大公约数
    javascript实现验证身份证号的有效性并提示
  • 原文地址:https://www.cnblogs.com/wanghaibin/p/5534645.html
Copyright © 2020-2023  润新知