• NHibernate系列学习(二)-使用sql和hql以及linq


    1.本文主要介绍了NH的三种查询方式

    2.界面查看

    image

    3.代码架构

    image

    4.代码详情

    namespace KimismeDemo
    {
        public partial class Form2 : Form
        {
            private ISession session;
            private ISessionFactory factory;
            private ITransaction trans;
            public Form2()
            {
                InitializeComponent();
            }
    
            #region 1.初始化NH - private void Form2_Load(object sender, EventArgs e)
            private void Form2_Load(object sender, EventArgs e)
            {
                Configuration config = new Configuration().AddAssembly("Kimisme");
                factory = config.BuildSessionFactory();
                session = factory.OpenSession();
                dgvList.AutoGenerateColumns = false;
            }
            #endregion
    
            #region 2.0 执行 sql语句 - private void tsmiExecuteSql_Click(object sender, EventArgs e)
            private void tsmiExecuteSql_Click(object sender, EventArgs e)
            {
                string strSql = "select * from T_Student where sId >1";
                ISQLQuery sqlQuery = session.CreateSQLQuery(strSql).AddEntity(typeof(Student));
                IList<Student> stuList = sqlQuery.List<Student>();
                dgvList.DataSource = stuList.ToList();
            } 
            #endregion
    
            #region 3.0 执行存储过程 -  private void btnExecuteStoreProc_Click(object sender, EventArgs e)
            private void btnExecuteStoreProc_Click(object sender, EventArgs e)
            {
                trans = session.BeginTransaction();
    
                IList<Student> stuList = new List<Student>();
                ISessionFactoryImplementor imp = factory as ISessionFactoryImplementor;
                IDbConnection conn = imp.ConnectionProvider.GetConnection();
                IDbCommand cmd = imp.ConnectionProvider.GetConnection().CreateCommand();
    
                try
                {
                    cmd.CommandText = "Pro_GetStudent";
                    cmd.CommandType = CommandType.StoredProcedure;
                    IDbDataParameter parameter = cmd.CreateParameter();
                    parameter.ParameterName = "StudentId";
                    parameter.Value = 4;
                    cmd.Parameters.Add(parameter);
                    cmd.Connection = conn;
                    IDataReader read = cmd.ExecuteReader();
                    while (read.Read())
                    {
                        Student stu = new Student();
                        stu.Id = int.Parse(read.GetValue(0).ToString());
                        stu.Name = read.GetValue(1).ToString();
                        stu.Age = int.Parse(read.GetValue(2).ToString());
                        stuList.Add(stu);
                    }
                    trans.Commit();
                    dgvList.DataSource = stuList.ToList();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            } 
            #endregion
    
            #region 4.0 执行hql语句 -private void tsmiExecuteHql_Click(object sender, EventArgs e) 
            private void tsmiExecuteHql_Click(object sender, EventArgs e)
            {
                string strHql = "from Student stu where stu.Id >:stuId";
                IList<Student> stuList = session.CreateQuery(strHql).SetInt32("stuId", 7).List<Student>();
                dgvList.DataSource = stuList.ToList();
            } 
            #endregion
    
            #region 5.0 执行linq语句-聚合函数  - Max 
            private void tsmiMax_Click(object sender, EventArgs e)
            {
                var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
                int maxAge = (from s in stuList select s.Age).Max();
                MessageBox.Show(maxAge.ToString());
            } 
            #endregion
    
            #region 5.1 执行linq语句-聚合函数  - Min
            private void tsmiMin_Click(object sender, EventArgs e)
            {
                var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
                int minAge = (from s in stuList select s.Age).Min();
                MessageBox.Show(minAge.ToString());
            } 
            #endregion
    
            #region 5.2执行linq语句-聚合函数  - Avg
            private void tsmiAvg_Click(object sender, EventArgs e)
            {
                var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
                double avgAge = (from s in stuList select s.Age).Average();
                MessageBox.Show(avgAge.ToString());
            } 
            #endregion
    
            #region 5.3执行linq语句-聚合函数  - Sum
            private void tsmiSum_Click(object sender, EventArgs e)
            {
                var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
                int sumAge = (from s in stuList select s.Age).Sum();
                MessageBox.Show(sumAge.ToString());
            } 
            #endregion
    
            #region 5.4 执行linq语句-聚合函数  - Count
            private void tsmiCount_Click(object sender, EventArgs e)
            {
                var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
                int countAge = (from s in stuList select s.Age).Count();
                MessageBox.Show(countAge.ToString());
            } 
            #endregion
    
        }
    }

    5.代码下载

    下载地址

    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    poj3252(组合数)
    cf-Global Round2-E. Pavel and Triangles
    cf-Global Round2-D. Frets On Fire(二分)
    cf-Global Round2-C. Ramesses and Corner Inversion(思维)
    trick
    2019ICPC南京网络赛B super_log(a的b塔次方)
    欧拉定理,欧拉降幂
    F. Moving On
    Codeforces Round #200 (Div. 1)D. Water Tree
    hdu5452
  • 原文地址:https://www.cnblogs.com/kimisme/p/4628813.html
Copyright © 2020-2023  润新知