none
对ADO.NET和LINQ 以及控件SqlDataSource和ObjectDataSource之间关系的疑问 RRS feed

  • 问题

  •     在看Asp。Net的时候我常常遇到遇到一些相似的控件和技术!请教:这些相似的控件和技术是否可以不学或不使用!比如:

    1.我觉得ADO。NET就可以编出像样的关于数据库的程序了!LINQ还有必要学么?如果有必要,那么LINQ哪些功能是ADO所不能完成的呢?

    2.控件SqlDataSource和ObjectDataSource。我感觉SqlDataSource就够用了,可书上说现在流行三层架构,所以使用ObjectDataSource。

        ObjectDataSource是必须的么?如果是必须的,那它好在哪里?!


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年5月25日 14:36

答案

  • 你好:)

    正如蒋版主等所言,LINQ是数据访问的范畴一种技术而已,和ADO.NET没有任何关系,ADO.NET比较狭隘的定义在数据库的数据存取访问。注意——LINQ可不仅仅是针对数据库访问的。LINQ照样可以对普通的集合对象进行访问,比如一个List<int>有1~100个数字,你想筛选出偶数,用LINQ轻而易举——

    List<int> numbers = new List<int>();

    //赋值省略…………

    var result = from num in  numbers

                      where num%2==0

                      select num;

    【结论】——LINQ可以用于以下一些范畴——

    LINQ TO SQL(这一点而言,和ADO.NET数据访问类似,但是机制完全不同)

    LINQ To Objects(就是我上面的代码)

    LINQ TO XML(xml文件访问)

    …………


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月27日 2:41
    版主

全部回复

  • 1 LINQ是语言的扩展,ADO.Net是和语言无关的类库。这两个互不统属,只不过规定了通讯接口而已。

    2 如果你直接绑定的话,数据层的错误消息会直接显示给用户,通常你的用户不会懂得数据库的调试用信息



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年5月25日 17:31
    版主
  • 1 LINQ是语言的扩展,ADO.Net是和语言无关的类库。这两个互不统属,只不过规定了通讯接口而已。

    2 如果你直接绑定的话,数据层的错误消息会直接显示给用户,通常你的用户不会懂得数据库的调试用信息



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    说得比较笼统!还是不明白!可否具体点!特别是第二个问题!
    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年5月26日 2:31
  • 1、ADO.NET vs LINQ

    这两个东西完全不同,ADO.NET,Active Data Object for .NET,是一种数据访问技术。LINQ,Language Integrated Query,是一种基于语言的查询框架。ADO.NET 可以支持 LINQ (被称为 LINQ to SQL 或者 LINQ to Entities),以实现强类型化的,基于延迟执行 (Defferred Execution) 的数据访问;相似的,LINQ 不仅可以被 ADO.NET 使用,而且,他还可以被其他任何技术支持,只要有相应的 LINQ Provider。如现在有的是: LINQ to Objects, LINQ to XML, LINQ to Twitter, LINQ to HPC, LINQ to Youtube, LINQ to Google, LINQ to Oracle 等等。LINQ 是一个统一的,可扩展的框架。

    2、SqlDataSource vs ObjectDataSource

    这个就很明显了,SqlDataSource 仅仅接受来自 SQL Server 数据源的数据,如 SqlCommand 或者 SqlAdapter。但是不是所有的数据源都来自数据库,比如,您在代码中创建的对象,它保存在内存中,如果希望把这些对象作为数据源,那么就要选择 ObjectDataSource。比如您需要显示一个世界上所有的语言列表,就应该用 ObjectDataSource,因为这个语言列表 .NET 中已经提供了,不用持久化到数据库去。

    希望这个解释对您有帮助。


    Mark Zhou
    2011年5月26日 9:52
  • ADO.NET vs LINQ

    1.可以理解为LINQ要基于ADO.NET才能起作用,而ADO.NET没有LINQ也照样使用么?

    2.LINQ的用处大么?我感觉ADO.NET的功能够用了,LINQ只是锦上添花。可用可不用实际情况是这样的么?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2011年5月26日 12:10
  • LINQ的全称是Language Integrated Query,是和语言集成的查询的意思,但是没有指定查询必须是数据库查询。比如LINQ to Object和LINQ to XML就是不需要数据库的。只要LINQ提供者遵循LINQ的接口,数据源是没有限制的。

    是否使用LINQ取决于你的项目需求。“够用”是一个和你的当前项目需求相关的词。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年5月26日 18:37
    版主
  • 你好:)

    正如蒋版主等所言,LINQ是数据访问的范畴一种技术而已,和ADO.NET没有任何关系,ADO.NET比较狭隘的定义在数据库的数据存取访问。注意——LINQ可不仅仅是针对数据库访问的。LINQ照样可以对普通的集合对象进行访问,比如一个List<int>有1~100个数字,你想筛选出偶数,用LINQ轻而易举——

    List<int> numbers = new List<int>();

    //赋值省略…………

    var result = from num in  numbers

                      where num%2==0

                      select num;

    【结论】——LINQ可以用于以下一些范畴——

    LINQ TO SQL(这一点而言,和ADO.NET数据访问类似,但是机制完全不同)

    LINQ To Objects(就是我上面的代码)

    LINQ TO XML(xml文件访问)

    …………


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月27日 2:41
    版主