NHibernate多种方式实现增删改查

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaouncle/article/details/82888748

一、非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();
}

猜你喜欢

转载自blog.csdn.net/xiaouncle/article/details/82888748
今日推荐