當前位置:首頁 » 編程語言 » linq生成sql

linq生成sql

發布時間: 2022-12-08 09:21:06

A. linq to sql類怎麼用

  1. 打開VS2010新建控制台應用程序,然後添加LINQ to SQL Class,命名為DbApp.dbml,新建dbml文件之後,可以打開server explorer,建立資料庫連接,並將我們新建的表拖到dbml文件中,

  2. 2. 可以通過點擊dbml文件空白處,按F4顯示dbml屬性,可以修改Context和生成實體的命名空間

  3. 3. 到現在為止VS2010通過工具為我們創建好了數據表對應實體類和數據表操作添,改,刪的方法,現在開始實踐

B. 如何:顯示生成的 SQL (LINQ to SQL)

您可以將此屬性與查詢、插入、更新和刪除命令一起使用。SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]FROM [dbo].[Customers] AS [t0]WHERE [t0].[City] = @p0-- @p0: Input String (Size = 6; Prec = 0; Scale = 0) [London]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20810. Visual Basic db.Log = Console.Out Dim custQuery = _ From cust In db.Customers _ Where cust.City = "London" _ Select cust ForEach custObj In custQuery Console.WriteLine(custObj.CustomerID) Next C# db.Log = Console.Out; IQueryable<Customer> custQuery = from cust in db.Customers where cust.City == "London" select cust; foreach(Customer custObj in custQuery) { Console.WriteLine(custObj.CustomerID); }

C. LINQ to SQL 和一般的查詢語句怎麼什麼區別

linq是面向對象的sql。也就是說,sql是向關系型資料庫的查詢,而linq實際上是對內存里的數據的查詢。
雖然linq原來是對象查詢,但經過ms的努力,可以通過表達式分析與實體到關系的映射(linq
to
sql),把linq轉換為sql語句或是對xml的查詢(linq
to
xml)。
因此,這種技術就成了對象到資料庫記錄的一個方便的映射、轉化與操作的工具,你再也不必去去根據不同的情況用字元串拼接的辦法生成sql,而是專心於對象模型的處理即可,你對於對象的修改最終都會被轉換為對應的update,
insert,
delete等sql語句,在你submit時全部提交到資料庫中。
綜爾言之,linq
to
sql是一個資料庫到對象結構的一個中間層,
他把對關系數據的管理轉變為對象的操作,屏蔽了麻煩的sql,而且,還可以得到vs強大的智能感知功能的幫助。

D. 如何創建linq to sql

當您要使用語言集成查詢 (LINQ) 訪問資料庫中的數據時,不能直接連接到該資料庫。而是應創建表示該資料庫及其表的類,然後使用這些類進行數據交互。通過對象關系設計器或運行 SqlMetal.exe 實用工具可生成這些類。有關更多信息,請參見對象關系設計器(O/R 設計器)和代碼生成工具 (SqlMetal.exe)。
本主題演示如何在 Web 應用程序中使用 O/R 設計器創建表示 SQL Server 資料庫的數據類。
這些數據類必須放置在 Web 應用程序的 App_Code 文件夾或其子文件夾中。如果將數據類包括在 App_Code 的子文件夾中,則會將該子文件夾的名稱用作類的命名空間。在此情況下,必須在連接至數據類時提供該命名空間。
使用O/R 設計器時,會自動將用於訪問資料庫的連接字元串添加到 Web.config 文件中。
創建這些類後,即可使用 LinqDataSource 控制項、ObjectDataSource 控制項或 LINQ 查詢連接它們。
從資料庫表中創建類
如果網站上還沒有 App_Code 文件夾,請在「解決方案資源管理器」中右擊相應的項目,再單擊「添加 ASP.NET 文件夾」,然後單擊「App_Code」。
右擊 App_Code 文件夾,然後單擊「添加新項」。
在「已安裝的模板」下,選擇「LINQ to SQL 類」模板,為 .dbml 文件鍵入一個名稱,然後單擊「添加」。
此時將顯示「對象關系設計器」窗口。
在「伺服器資源管理器」中,將該資料庫表拖入「對象關系設計器」窗口。
在設計器窗口中,該表及其列都表示為實體。
保存 .dbml 文件。
這會在 .dbml 文件下面創建一個 .designer.cs 或 .designer.vb 文件。該文件包含一個表示資料庫的類和一個表示表的類。該資料庫類的無參數構造函數將從 Web.config 文件中讀取連接字元串。

E. 如何查看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在我們意料之外。呵呵。我的感覺是這樣

F. 能把linq中的where里的條件轉為sql嗎

可以,linq其實也是sql的功能,只是linq和sql的寫法不一樣,關鍵字什麼的都一樣,兩個是可以相互轉換的。

G. C#中LINQ怎麼生成下面那條SQL

通常有三種常用的方法用來追蹤由 LINQ To SQL 提供器生成的 SQL 命令:用 DataContext.log ,用 DataContext.GetCommand ,和用 LINQ To SQL 調試平台。
1) 用 DataContext.log
這句代碼可以使生成的 SQL 顯示在控制台窗口。這個 SQL 可以是查詢,插入,更新和刪除命令。
=======================================================
db.Log = Console.Out;
=======================================================
附加參考:
http://msdn.microsoft.com/en-us/library/bb386961.aspx
2) 用 DataContext.GetCommand
這個方法提供了有關 LINQ To SQL 生成的 SQL 命令的相關信息,但是它僅僅是獲取方法而不影響 DataContext 的狀態。請注意以下事項(引自 MSDN 文檔):
· 參數必須非空,否則會拋出一個空參數異常。
· 正常的 LINQ 查詢轉換為 SQL 查詢執行拋出異常的申請不能被轉換。
· 只有以一個查詢命令返回。特別是額外的命令,這是渴望載入命令,不包括在內。
· DataContext 不跟蹤用戶處理的命令,例如從返回的命令執行的結果不會被追蹤,從而不影響 DataContext 的狀態。
下面的示例顯示 SQL 命令生成的控制台窗口中的 LINQ To SQL 查詢。
======================================================
MyDataContextdb = new MyDataContext();
var query = from d in db.Departments select d;
DbCommand dc = db.GetCommand(q);
Console.WriteLine(dc.CommandText);
=======================================================
附加參考:
http://msdn.microsoft.com/en-us/library/bb882652.aspx

3) 用 LINQ To SQL 調試平台
LINQ To SQL 調試平台通過看見在 Visual Studio 調試平台 生成的 SQL 可以幫助我們調試 LINQ to SQL IQueryable<> 查詢語句。我們也可以在平台上執行生成的 SQL 語句來檢查返回值。
要安裝 LINQ to SQL 調試平台,請按照以下步驟:
a) 下載 LINQ to SQL Visualizer.zip 壓縮包在 這兒 。
b) 關閉正在與性的各種版本的 visual studio 2008 。
c) 從 .zip 壓縮包的 /bin/debug/ 路徑復制 SqlServerQueryVisualizer.dll 程序集到本地路徑 /Program Files/Microsoft Visual Studio9.0/Common7/Packages/Debugger/Visualizers/ 。
d) 再次啟動 Visual Studio2008 。現在我們就可以用 LINQ to SQL 調試平台了。

H. 如何利用LINQ to SQL來訪問後台資料庫

在這一步中,我們會:
• 生成一個控制台程序
• 生成一個LINQ to SQL類
• 測試連接後台資料庫並讀取信息In this task, we will
• Create a console application
• Create a LINQ to SQL class in the project
• Validate the database connection by writing some data out to Console
1. 打開Visual Studio 2008:開始 | 所有程序 | Microsoft Visual Studio 2008 | Microsoft Visual Studio 2008

2. 在菜單里,選中文件|新建|項目…

3. 在新建項目對話框中,展開並選中項目類型中的 Visual C# | Windows,在右邊的模板中選中控制台應用程序

4. 在名稱文本框中填入 CreateDocFromDatabase

5. 在位置文本框中填入c:\HOL\OFCHOL245
6. 保證單選框創建解決方案的目錄 沒有選中

7. 點擊確定按鈕
8. 在後面幾步里,我們要在項目中加一個Linq to SQL的類,這樣我們就可以從資料庫中直接提取數據:在解決方案資源管理器中,右擊項目CreateDocFromDatabase,在展開的菜單中選擇添加 | 新建項

9. 在添加新項對話框中,在類別框中選中Visua C#項,在右邊的模板框中選中LINQ to SQL類,在下面的名稱文本框中敲入AdventureWorks.dbml作為類的名稱,點擊添加按鈕

10. 如果AdventureWorks.dbml的編輯頁面沒有自動打開,在解決方案資源管理器中雙擊AdventureWorks.dbml,其編輯頁面就會打開;點擊其中的鏈接伺服器資源管理器,在VS左邊會彈出伺服器資源管理器的窗口

11. 在伺服器資源管理器的窗口中,右擊數據連接,選中添加連接按鈕

12. 如果選擇數據源的對話框出現,在選擇數據源的對話框中,選中Microsoft SQL Server,點擊繼續按鈕

13. 在添加鏈接的對話框中,在伺服器名的下拉表中填入localhost;
在登錄到伺服器的區域中,選中單選按鈕使用SQL Server身份驗證,然後在其下面的用戶名文本框中填入sa,在密碼文本框中填入pass@word0!;
在連接到一個資料庫的區域中,選中單選按鈕選擇或輸入一個資料庫名,然後在其下面的下拉表中填入或選中AdventureWorks
點擊確定按鈕

14. 在伺服器資源管理器窗口中,點擊樹形結構中的+以展開labrownev2009.AdventureWorks.dbo | 表

15. 在展開的labrownev2009.AdventureWorks.dbo的表中,選中以下四個表:Proct, ProctPhoto, ProctProctPhoto, ProctSubcategory;將其拖拉到AdventureWorks.dbml的編輯頁面中。如果有警示的對話框出現,點擊是即可。(按下鍵盤Ctrl可同時選中多個表;拖拉的動作可以用按住滑鼠右鍵拖拉來完成)

在AdventureWorks.dbml的編輯頁面中會出現四個表關系圖
16. Ctrl-S來保存當前的項目
17. 編輯生成項目:在解決方案資源管理器中,右擊項目CreateDocFromDatabase,在下拉菜單中選中生成編輯生成應該成功沒有錯誤。

18. 在解決方案資源管理器中,雙擊Program.cs 打開其程序編輯窗口.

19. 將以下的程序加到method: static void Main(string[] args){}.
AdventureWorksDataContext context = new AdventureWorksDataContext();
var procts = from p in context.Proct select p.Name;
foreach (string name in procts)
{
System.Console.WriteLine(name);
}
System.Console.ReadLine();

你的程序應該和下面程序一樣
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CreateDocFromDatabase
{
class Program
{
static void Main(string[] args)
{
AdventureWorksDataContext context = new AdventureWorksDataContext();
var procts = from p in context.Proct select p.Name;
foreach (string name in procts)
{
System.Console.WriteLine(name);
}
System.Console.ReadLine();
}
}
}

備注:可以加入已經編輯好的代碼段。在將要加入代碼段的位置,點擊滑鼠右鍵,選中插入代碼段如下圖

選中後,在代碼段表中選中My Code Snippets | TestConnectToDB
20. 在Visual Studio 2008 中,按F5運行程序,你會看到一個控制台窗口被打開了;在窗口中列出一系列產品名稱

21. 在控制台窗口被選中的時候,按任何一個按鍵來結束程序運行。

熱點內容
一台伺服器多個同段地址怎麼通訊 發布:2025-01-20 16:45:58 瀏覽:734
i7源碼 發布:2025-01-20 16:40:48 瀏覽:983
抽簽源碼 發布:2025-01-20 16:38:35 瀏覽:62
密碼箱怎麼鎖住 發布:2025-01-20 16:32:17 瀏覽:31
編譯隔離 發布:2025-01-20 16:28:54 瀏覽:358
從哪裡看自己的qq賬號和密碼 發布:2025-01-20 16:22:33 瀏覽:400
sql語句動態 發布:2025-01-20 16:18:22 瀏覽:298
sql表或的語句 發布:2025-01-20 16:00:49 瀏覽:163
西瓜視頻怎麼緩存不了電影了 發布:2025-01-20 16:00:45 瀏覽:890
javatimer 發布:2025-01-20 15:55:56 瀏覽:64