摘要:[C#] LINQ to SQL 教學
LINQ to SQL Data Model
我新開了一個專案作為Demo,LINQ需要先建一個Data Model才能用,所以要先Add a new Item。
選擇LINQ to SQL Classes,這樣就會生出一個dbml檔。
不過新的dbml還沒有設定,所以都是空的,這時候在Server Explorer的[Data Connections]上選擇[Add Connection]。
輸入DB連線的相關資訊後就好了,也可以先按左下角的[Test Connection]測試一下是否有設對。
btw,我測試用的DB內容是長這樣
Query Example
然後來做幾個測試。
這邊我做了select的兩個範例,第一個是將整個tbl_users表格資料列出,第二個是以兩種不同的方式將uid=3的user name 印出,應該還蠻容易懂的。
結果出來就是這樣。
Update Example
然後來測一下更新的語法。
在這邊我使用SubmitChanges()這個function更新了tbl_user這個資料表裡uid=1的name與age,最後我是懶惰沒有重新讀取一次更新後的資料XD
結果如下。
Add New Data
接下來是新增資料的語法。
LINQDemoDataContext DB = new LINQDemoDataContext();
//新增User
Console.WriteLine("新增User");
tbl_user user = new tbl_user();
user.name = "James";
user.agr = 47;
DB.tbl_users.InsertOnSubmit(user);
DB.SubmitChanges();
//新增info
Console.WriteLine("新增info");
tbl_info info = new tbl_info();
info.manager = null;
info.score = 80;
info.@class = "James May"; //@ ->因為保留字
info.uid = user.uid; //same as @@identify
DB.tbl_infos.InsertOnSubmit(info);
DB.SubmitChanges();
//新增後資料
Console.WriteLine("新增之資料");
tbl_user new_user = DB.tbl_users.Single(p => p.uid == user.uid);
Console.WriteLine(String.Format("new user uid={0} ,name is {1}, age {2}", new_user.uid, new_user.name, new_user.agr));
tbl_info new_info = DB.tbl_infos.Single(p => p.uid == user.uid);
Console.WriteLine(String.Format("new user uid={0} ,class is {1}, manager is {2}, score = {3}", new_info.uid, new_info.@class,new_info.manager, new_info.score));
這邊先在tbl_user新增一筆資料,然後根據新增資料之uid再新增至tbl_info。
結果如上,LINQ取@@identify還蠻方便的。
Delete Example
接下來是刪除的範例。
這邊刪除了tbl_user裡name為"Tuan"的資料列,結果如下。
Call Stored Procedure
接下來介紹如何呼叫預存程序,我先弄個會隨機選取一列的Stored Procedure。
CREATE PROCEDURE sp_RandomRow
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP 1 [uid],[name],[agr] FROM tbl_user ORDER BY NEWID()
END
GO
然後將這個預存程序拉進dbml內,這樣在程式中才能呼叫,下面是呼叫預存程序的語法。
LINQDemoDataContext DB = new LINQDemoDataContext();
//呼叫預存程序
Console.WriteLine("呼叫預存程序");
var Result = DB.sp_RandomRow();
Console.WriteLine("uid\tname\tage");
foreach (var item in Result)
{
Console.WriteLine(item.uid + "\t" + item.name + "\t" + item.agr);
}
執行結果沒啥特別,我就懶得貼了。
以上為LINQ TO SQL的基本教學,基本上會用到的需求都有作範例了,希望對於上手有幫助。