zoukankan      html  css  js  c++  java
  • 今天关于Linq,NHibernate等持久数据的理解


    声明:这篇文章仅仅是我自己对这个东西的理解.读者最好只做一个参考之用

    最近比较闲,于是我对VS2008 Linq技术进行了研究.其实Linq的实质就是对数据库访问类的一个封装.

    在java的hibernate开源中,这点可以清晰的理解到. 这个样子,你可以完全把数据当做一个对象进行操纵.这个样子就完成了对数据里面数据的操作. 换句话说,他把面向对象化更加的对象化了.

    他的最好的一个问题就是,不用你再到数据查询分析器里面去测试那些SQL.Linq里面你必须根据他的规则进行SQL的组合.当你有错误之后也能及时的提示你.减少了SQL中那些无用功.对于初学者,这个是很好的一个东西.上手相对比较容易.

    不过写了一两年SQL的人使用起他就觉得很麻烦了.感觉组织相关的SQL很麻烦.是能对SQL的组合进行测试,不够相对复杂的SQL就会觉得很麻烦.特别是那种实现方法的比较多的那种.

    在Linq里面,你还可以把存储过程当做方法进行执行.

    Linq是很强大.不过现在问问很多,还是需要慎用!

    Linq示例:

    Console.WriteLine(context.area.Where(a => a.AreaID == 9).FirstOrDefault().AreaName);

    在SQL 你需要

    写很多的代码

    string strsql="select a   reaname from area where areaID=9 ";

    写完SQL你还必须把他弄到ADO.NET中进行执行.感觉很麻烦吧.老程序员,基本都不必考虑这一部.估计在很早以前就进行了自己的封装.

    string dbStr = "data source=.;uid=sa;pwd=sa;database=mydb";
                DataSet ds = null;
                try
                {
                    SqlConnection sqlcon = new SqlConnection(dbStr);
                    SqlCommand sqlcmd = new SqlCommand(strSql, sqlcon);
                    SqlDataAdapter sqldad = new SqlDataAdapter(sqlcmd);
                    sqlcon.Open();
                    ds = new DataSet();
                    sqldad.Fill(ds);
                    sqlcon.Close();
                }
                catch (Exception e)
                {

                    Response.Write("对不起,数据输入有误!");

                }


    同时在对数据的接收上,更加好用了.不用像以前.接受返回的是一个DataTable,DataSet这个样子.你想把他变成自己想用的实体样式,还需要写类进行相应的转换.Linq他直接使用 

     IQueryable<area> myareaDataTable=  context.area.Where(a => a.AreaID > 9).AsQueryable() 

    一个实体数据集合尽行接收.可以说节约了相当多的时间.

  • 相关阅读:
    MySQL常用维护管理工具 枫
    sql触发器 枫
    MySQL函数大全 枫
    使用Cscope阅读Linux源码 枫
    ASP.NET文件下载,直接向客户端输出文件 枫
    网站设计数据库集群和数据库垂直分割,水平分割,库表散列 枫
    西点成品分类 枫
    asp函数列表 枫
    [笔记]一道C语言面试题:实现 itoa() 函数
    [笔记]Arduino平台使用US100超声波测距模块的电平模式测距实验
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146568.html
Copyright © 2011-2022 走看看