能用linp查询的对象有哪些?linp的数据源包括哪些

能用linp查询的对象有哪些?linp的数据源包括哪些,第1张

首先是LINQ,不是linp

LINQ支持以下的数据源

LINQ to Objects

对IEnumerable和IEnumerable<T>类型进行查询

LINQ to XML

对XML进行查询

LINQ to DataSet

LINQ to SQL

LINQ to Entities

上面三种的数据源都是数据库

LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式 *** 作内存数据。

从技术角度而言,LINQ定义了大约40个查询 *** 作符,如select、from、in、where以及order by(C#中)。使用这些 *** 作符可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。

经过了最近 20 年,面向对象编程技术( object-oriented (OO) programming technologies )在工业领域的应用已经进入了一个稳定的发展阶段。程序员现在都已经认同像 类(classes)、对象(objects)、方法(methods)这样的语言特性。考察现在和下一代的技术,一个新的编程技术的重大挑战开始呈现出来,即面向对象技术诞生以来并没有解决降低访问和整合信息数据( accessing and integrating information )的复杂度的问题。其中两个最主要访问的数据源与数据库(database)和XML(标准通用标记语言下的一个应用)相关。

LINQ 提供了一条更常规的途径即给.Net Framework添加一些可以应用于所有信息源( all sources of information )的具有多种用途( general-purpose )的语法查询特性( query facilities ),这是比向开发语言和运行时( runtime )添加一些关系数据( relational )特性或者类似 XML 特性( XML-specific )更好的方式。这些语法特性就叫做 .NET Language Integrated Query (LINQ) 。

你要问的是c# *** 作数据库吧

一般分两类,

1是ADO.NET,原生支持Sqlserver,引入dll后可以支持mysql oracle等数据库,

2是ORM框架,常见的EF FLUENT等,以EF为例,可以使用LINQ *** 作实体类,从而进行数据库 *** 作,

然后回到你的问题,

1,出错率:

肯定是ORM的出错少,因为使用LINQ进行数据库“增删改查”,语法上的问题,编译器可以识别,而ado是要写sql语句的,sql语句是字符串类型,VS编译器是不会处理的。

如果你真正开发过较大的项目,那么你会发现纯sql是多么的讨厌,你很可能少些了一个空格,多打了一个字母,都会有问题。而且很难查到。

2,速度:

ORM的原理就是把LINQ的表达式,转换成SQL语句,然后使用ADO.NET进行数据库 *** 作, 所以理论上ORM一定比ADO慢。

但是还是要看数据结构和书写SQL语句的人的水平, 比如分页查询这种功能,一般的SQL写法可能需要1分钟来查,对Sql熟练的高手写一个存储过程,可能只需要10秒。

3,对服务器负担:

以EF为例,每一次LINQ *** 作,EF都会开、关一次连接,在较复杂的查询中,EF的开销会比较大,而ADO还是要看书写的SQL水平,

总结一下:

ORM框架会大大减少DAL层的代码工作量,并且减少书写错误率,但是效率偏低。

由于ORM框架的核心还是ADO.NET,所以绝大部分ORM都有参数可以兼容我们手写SQL语句,比如EF即可以使用LINQ,也可以手写DbCommand, 所以更建议去熟悉一种ORM框架,这样开发起来事半功倍。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10025008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存