當前位置:首頁 » 編程語言 » 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 }