当前位置:首页 » 编程语言 » linqtoentity查看sql
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

linqtoentity查看sql

发布时间: 2022-06-27 04:23:39

1. 如何查看LINQ执行的sql语句

如何查看某个用户执行过的sql语句
--SYS窗口
SQL> select sql_text from v$sql where parsing_schema_name='SCOTT'
2 order by last_load_time desc;

no rows selected

SQL> /

SQL_TEXT
-------------------------------------------------------------------------------

select * from dept

SQL>
--SCOTT窗口
SQL> show user
USER is "SCOTT"
SQL> select * from dept;

DEPTNO DNAME LOC

2. Linq to Entity怎么用讲解下

     LINQ to Entities 是 LINQ 中最吸引人的部分。它让你可以使用标准的 C# 对象与数据库的结构和数据打交道。使用 LINQ to Entities 时,LINQ 查询在后台转换为 SQL 查询并在需要数据的时候执行,即开始枚举结果的时候执行。LINQ to Entities 还为你获取的所有数据提供变化追踪,也就是说,可以修改查询获得的对象,然后整批同时把更新提交到数据库。
       LINQ to Entities 是 Entity Framework 的一部分并且取代 LINQ to SQL 作为在数据库上使用 LINQ 的标准机制。Entity Framework 是行业领先的对象-关系映射(ORM)系统。可以和多种数据库一起使用,并支持各种灵活、复杂的数据模型。
注:
       微软把开发的重点从 LINQ to SQL 转移到了 LINQ to Entities,并且宣布 LINQ to SQL 不再提供更新,LINQ to SQL 现在仍被支持单不推荐。
       LINQ to Entities 是一项令人印象深刻的技术,但对大多数开发人员而言只是一个小的进步。和 DataSet 一样,ASP.NET 开发人员使用 LINQ 的查询特新远多于它的批量更新特性。这是因为通常 Web 应用程序的更新是单次的而不是批量的。他们更愿意在页面回发时立刻执行更新,同时可以获得原始值和新(更新)值,这使得通过 ADO.NET 命令提交更新更加方便。
       简而言之,LINQ to Entities 没有提供任何不能用 ADO.NET代码、自定义对象、LINQ to Objects 实现的特性,但是有时出于某些原因而需要考虑使用 LINQ to Entities:
更少的代码。不必编写查询数据库的 ADO.NET 代码,可以通过一个工具生成需要的数据类。
灵活的查询能力。不必拼凑 SQL 语句,而是使用 LINQ 查询模型。一致的查询模型可访问众多不同的数据源(从数据库到 XML)。
变更追踪以及批量更新。可以对查询的数据进行多项修改并提交批量更新,这不需要编写任何 ADO.NET 代码。
生成数据模型
       Entity Framework 依赖于一个数据模型来使用 LINQ to Entities 进行查询。表中的行被转换为 C# 对象的实例,表的列是这些对象的属性。数据库架构和数据模型对象的映射是 Entity Framework 的核心.
       为了生成模型,右击 App_Code 目录,单击“添加新项”,“ADO.NET 实体数据模型”,设置创建的文件名称后(这里是 NorthwindModel.edmx),单击“确定”。
       从一个已经存在的数据库生成模型,即微软的 Northwind 示例数据库。配置数据库连接,并可以选择表、视图、和存储过程。还可以选择使用复数还是单数形式的对象名(例如,Procts 表的行被命名为 Proct )、是否包含外键关系等。这里选择全部表并选中“所生成对象的单复数形式”。
       Visual Studio 会为你选择的数据库元素创建模型图,它显示了已经创建的映射对象、对象拥有的字段以及对象之间的关系。
       项目中新增了下面这两个文件:
NorthwindModel.edmx:这个XML文件定义数据库模型的架构。
NorthwindModel.Designer.cs:这个C#代码文件包含数据模型的映射对象。
数据模型类
       我们将把大部分时间花在 NorthwindModel.Designer.cs这个文件上。因为它包含了我们要用于 LINQ to Entities 查询的数据类型。(这个文件会被数据模型重新生成,因此不应该也不必要手工去修改这个文件,你的修改会丢失。)
       打开该文件,可以看到有两段代码区域:Contexts 和 Entities 。
1. 派生的对象上下文
       NorthwindModel.Designer.cs文件中定义的第一个类从 ObjectContext 派生,其名称是 NorthwindEntities 。这个类的构造函数连接到所生成模型的数据库,或者你也可以指定连接字符串连接到其他数据库(必须具有相同的架构,否则模型无法工作)。
       下面是一个简单的示例:
protectedvoidPage_Load(objectsender, EventArgs e)
{
NorthwindEntities db = newNorthwindEntities();
GridView1.DataSource = db.Procts

3. 求问一下Entity SQL或者Linq To Entity怎么实现这个Oracle SQL语句

INQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术。他们之间的本质区别在于EF对数据库架构和查询的类型实行了更好的解耦。使用EF,查询的对象不再是完全对应数据库架构的C#类,而是更高层的抽象:Entity Data Model。这提供了额外的灵活性,但是在性能和简单性上面也会有所损失。

4. 怎么查看linq产生的sql语句

最近在使用Linq To SQL的时候,为了了解不同Linq语句对性能造成的不同影响,需要获得Linq To SQL输出SQL语句。
如果是在桌面程序中,只需要
_context.Log = Console.Out; 即可Linq To SQL输出SQL语句。

5. sql 转换成 linq to entity

entities.DomainItem.SelectMany(d => entities.Domain, (di , d) => new {di = di, d = d})
.SelcetMany(dt => entities.DomainType, (did, dt) => new { did = did, dt = dt})
.Where(item => item.dt.Id == item.did.d.DomainTypeId &&
item.did.d.Id == item.did.di.DomainID &&
item.dt.TypeName == files)
.Select(item => item.did.di).ToList();
上面是没有是实体关联的写法,如果有实体关联可写:
entities.DomainItem.Where(item => item.Domain.DomainType.TypeName == files).ToList();
其中DomainItem对Domain是多对1,Domain对DomainType是多对1

6. 如何查看linq生成的sql

linq使用对象的方式来操作数据库。最后根本的还是生成原始的sql。但是对象的方式掩盖了很多原本的sql面貌可能会是我们不明白对应的sql是什么。还好linq可以输出sql语句
DataClassesDataContext dc = new DataClassesDataContext();
这个对象提供的日志功能。就是输出对应的sql语句。在控制台应用程序下。使用dc.console(有误)可以直接输出显示对应的sql语句。
在windonw和web程序下面可以建立一个txt文件日志。把生成的sql记录下来。代码比较简单了
DataClassesDataContext dc = new DataClassesDataContext();
StreamWriter sw = new StreamWriter(Server.MapPath("sqlLog.txt"), true); // Append
dc.Log = sw;
//然后是linq的相关数据操作

sw.Flush();
sw.Close();
就这样对应的sql语句就记录到sqlLog.txt文件中了。
我们可能会发现生成的sql在我们意料之外。呵呵。我的感觉是这样

7. 如何查看Linq to SQL运行时,实际执行的Sql语句

调试Linq to sql代码是, 如果遇到错误,很难判断错误的原因是什么,如果能够输出实际执行的sql原文,对于我们寻找错误的原因有有很大帮助。

以下是我用到的方法:

StringBuilder sql = new StringBuilder();
try
{
using (var context = new DataContext())
{
context.Log = new System.IO.StringWriter(sql);
context.SubmitChanges();
}
}
finally
{
sql.ToString();
}

8. LINQ TO SQL 和 ADO.NET ENTITY 有什么区别呢

LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术。他们之间的本质区别在于EF对数据库架构和查询的类型实行了更好的解耦。使用EF,查询的对象不再是完全对应数据库架构的C#类,而是更高层的抽象:Entity Data Model。这提供了额外的灵活性,但是在性能和简单性上面也会有所损失。具体二者之间的区别如下:

复杂度:支持越多的特性就会越复杂。LINQ to SQL所支持的特性比较少,所以也就相对不太复杂;而EntityFramework支持的特性比较多,所以相对比较复杂。
模型:LINQ to SQL在数据表与类之间提供了一对一的映射。如果你有Customers,Orders, 和Lineitems表,你就会有Customer,Order, 和Lineitem类来匹配每一个表。EntityFramework可以使你有一个Customer类,而这个类可以匹配多个表。这就意味着公司名可以 在一个表中,但是地址是在另一个表中,而电话号码又在另一个表中,等等。
数据库服务器:LINQ to SQL只支持Microsoft SQL Server 2000及之后的版本,但即使是SQLServer2000也有很多限制。EntityFramework可以支持IBMDB2, Sybase SqlAnywhere, Oracle, SQLAzure,还有其他很多。
开发时间:LINQ to SQL很容易学,开发起来也很快,但是LINQ to SQL有一些限制,在开发较复杂的应用时可能会产生问题。EntityFramework的能力更强,虽然学习及应用起来比较慢,但是对更多的特性的支持使得在开发较复杂的应用时可以使问题最小化。
继承:LINQ to SQL支持TPH,而EntityFramework支持TPH和TPT,并且对TPC也部分支持。
文件类型:LINQ to SQL使用包含XML的数据库标记语言(DBML)文件来映射entity与数据表。EntityFramework 使用四个文件。第一个是Entity Data Model (EDMX),这个是在设计器中使用的。在编译时EDMX文件产生了其他三个文件。另外三个文件中,第一个是ConceptualSchema Definition Language(CSDL)文件,其包含概念模型的XML定义。第二个是SchemaDefinition Language(SSDL)文件,其包含存储模型的定义。第三个文件是Mapping Specification Language(MSL)文件,其包含概念模型与存储模型之间的映射。
复杂类型支持:比如说,一个客户有电话号码,但你想要电话号码定义为国家区号,地区号,城市区号,号码和分机号。LINQto SQL不支持这种复杂类型,而EntityFramework支持。
查询能力:LINQ to SQL通过DataContext对数据库进行查询。EntityFramework通过ObjectContext通过LINQto Entities进行查询。Entity Framework还提供了ESQL,它是一种类似SQL的查询语言,很适合在模型定义中定义查询。EntityFramework还包含了 ObjectQuery类,用于对象服务在运行时动态创建查询。最后EntityFramework还包含EntityClientProvider,它 用于对概念模型进行查询。
性能:LINQ to SQL和Entity Framework第一次执行查询的时候都比较慢,但之后性能都让人比较满意。EntityFramework性能要稍微优于LINQto SQL。
完善:微软在发布了Entity Framework之后就停止了发布新的LINQ to SQL,但由于LINQto SQL的简单性,它还是很受欢迎的,所以微软仍将继续对LINQto SQL的用户进行支持与反馈,但是LINQto SQL将不再发布新版本进行完善。
由模型生成数据库:LINQ to SQL没有能力由模型生成数据库。Entity Framework支持两种类型的开发模式,数据库优先和编码优先。数据库优先开发,数据库已经存在,所以不需要由模型生成数据库。编码优先,你要先创建你的模型,然后由模型生成数据库。

9. linq to entity 怎样查询数据库最后一条数据

首先你要确定如何定义最后一条,是按照主键排序,还是按照别的顺序?
然后用orderbydesc( o => o.字段)按照条件条件倒叙排列,用.First()取倒叙的第一条不就行了

10. 如何从Linq to Entities得到生成的T-SQL语句

如何从Linq to Entities得到生成的T-SQL语句
class Program
2 {
3 static void Main(string[] args)
4 {
5 BreakAwayEntities context = new BreakAwayEntities();
6 var query = from r in context.Reservations join p in context.Payments on r.ReservationID equals p.ReservationID select new { r.Customer, p.Reservation };
7 string sql = ((ObjectQuery)query).ToTraceString();
8 Console.WriteLine(sql);
9 Console.Read();
10 }
11 }