NHibernate多种方式实现增删改查

一、非Sql增删改查单个对象

public ActionResult Index()
{
    int id = 16;
    #region 增一个对象__Save()
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {
            Sys_User user = new Sys_User()
            {
                Name = "guo",
                Gender = "男",
                Age = 16
            };
            object result = session.Save(user);
            session.Flush();
            id = Convert.ToInt32(result);
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    #region 删一个对象__Delete()
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {
            Sys_User user = new Sys_User()
            {
                Id = id
            };
            session.Delete(user);
            session.Flush();
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    #region 改一个对象__Update()
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {
            #region 不能只修改某字段,未赋值的属性会自动赋值为null
            Sys_User user = new Sys_User()
            {
                Id = id,
                Name = "heng"
            };
            session.Update(user); 
            #endregion

            session.Flush();
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    #region 查一个对象__Get<Sys_User>()
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {                    
            Sys_User user = session.Get<Sys_User>(6);
            session.Flush();
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    return View();
}

二、非Sql增删改查多个对象 

public ActionResult Index()
{
    int id = 16;

    #region 增多个对象__SetBatchSize()
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        session.SetBatchSize(10);
        ITransaction transaction = session.BeginTransaction();
        try
        {
            for (int i = 0; i < 23; i++)
            {
                Sys_Dict dict = new Sys_Dict()
                {
                    DictCode = "guo",
                    DictName = "男",
                    ParentCode = Guid.Parse("cbb2cdb6-1ebe-44b2-970f-a95a04fc169b"),
                    Remarks = "备注"
                };
                session.Save(dict);
            }
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    #region 删多个对象__Delete(hql)
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        session.SetBatchSize(10);
        ITransaction transaction = session.BeginTransaction();
        try
        {
            //hql语法:Sys_Dict指的是类名而不是表名
            session.Delete("from Sys_Dict where ParentCode='cbb2cdb6-1ebe-44b2-970f-a95a04fc169b'");
            session.Flush();
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    #region 改多个对象__没找到方法
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    #region 查多个对象__QueryOver<Sys_User>()、CreateCriteria<Sys_User>()
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {                    
            #region 查询多个对象
            IList<Sys_User> userList = session.QueryOver<Sys_User>().Where(a => a.Id > 3).List();
            session.Flush();
            #endregion

            #region 查询多个对象
            ICriteria criteria = session.CreateCriteria<Sys_User>();
            criteria.Add(Restrictions.Where<Sys_User>(a => a.Id > 3));
            criteria.Add(Restrictions.Like("Name", "ve", MatchMode.Anywhere));
            IList<Sys_User> userList = criteria.List<Sys_User>();
            session.Flush();
            #endregion

            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    return View();
}

三、Sql语句实现增删改查

public ActionResult Index()
{
    int id = 16;

    #region 执行Sql语句__CreateSQLQuery().ExecuteUpdate()、CreateSQLQuery().SetResultTransformer()
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {
            //insert、delete、update通过ExecuteUpdate()执行            
            string insertSql = string.Format("insert into Sys_User(Name,Gender) values('{0}','{1}')", "sqlInsert", 16);
            string deleteSql = string.Format("delete from Sys_User where Id={0}", id);
            string updateSql = string.Format("update Sys_User set Name='{0}' where Id={1}", "haha", id);
            string selectSql = string.Format("select Id, Name, Gender, Age, Password, SortNo, CreateDate from Sys_User where Id={1}", "ha", id);

            ISQLQuery sqlQuery = session.CreateSQLQuery(insertSql);
            sqlQuery.ExecuteUpdate();

            sqlQuery = session.CreateSQLQuery(deleteSql);
            sqlQuery.ExecuteUpdate();

            sqlQuery = session.CreateSQLQuery(updateSql);
            sqlQuery.ExecuteUpdate();

	    //select通过SetResultTransformer()执行
            IList<Sys_User> userList = session.CreateSQLQuery(selectSql).SetResultTransformer(Transformers.AliasToBean<Sys_User>()).List<Sys_User>();

            session.Flush();
            transaction.Commit();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
        }
    }
    #endregion

    return View();
}

四、NHibernate事务

public ActionResult Index()
{
    #region 增一个对象
    using (ISession session = new NHibernateHelper().OpenSession())
    {
        //1、创建事务
        ITransaction transaction = session.BeginTransaction();
        try
        {
            Sys_User user = new Sys_User()
            {
                Name = "guo",
                Gender = "男",
                Age = 16
            };
            object result = session.Save(user);
            session.Flush();
            id = Convert.ToInt32(result);
            //2、提交事务
	    transaction.Commit();
        }
        catch (Exception ex)
        {
	    //3、回滚事务
            transaction.Rollback();
        }
    }
    #endregion

    return View();
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值