日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据...

發布時間:2025/3/12 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LINQ和 LINQ to SQL 都已經不是一個新事物了,但是我接觸的比較晚,本著絕知此事要躬行的態度,決定寫這個系列。

本文使用的測試環境是VS 2010,和sql server 2005數據庫。

第一篇?????? 從CUD開始,如何使用LINQ? to SQL插入、修改、刪除數據

準備工作,現在數據庫中建好測試表Student,這個表只有三個字段ID,Name,Hometown,其中ID為int類型的自增長字段,Name和Howmtown是nvarchar類型

1. 打開VS2010新建控制臺應用程序,然后添加LINQ to SQL Class,命名為DbApp.dbml,新建dbml文件之后,可以打開server explorer,建立數據庫連接,并將我們新建的表拖到dbml文件中,結果如下圖

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

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

1)?添加 Add

static void Add()

{

//添加一個Student

Student aStudent = new Student

{

Name = "張小二",

Hometown = "南海觀音院"

};

Console.WriteLine("----------begin Add a student");

using (DbAppDataContext db = new DbAppDataContext())

{

db.Log = Console.Out;

db.Students.InsertOnSubmit(aStudent);

db.SubmitChanges();

}

Console.WriteLine("----------End Add a student");

}

輸出的sql語句

INSERT INTO [dbo].[Student]([Name], [Hometown])

VALUES (@p0, @p1)

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]

-- @p0: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [張小二]

-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [南海觀音院]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

2) 使用linq to sql執行Edit 編輯操作

private static void Edit(int id)

{

Console.WriteLine("----------begin edit");

using (DbAppDataContext db = new DbAppDataContext())

{

db.Log = Console.Out;

//取出student

var editStudent = db.Students.SingleOrDefault(s=>s.ID == id);

if (editStudent == null)

{

Console.WriteLine("id錯誤");

return;

}

//修改student的屬性

editStudent.Name = "張小三";

editStudent.Hometown = "張家口張家寨張家營";

//執行更新操作

db.SubmitChanges();

}

Console.WriteLine("---------end edit Student");

}

輸出的sql語句

SELECT [t0].[ID], [t0].[Name], [t0].[Hometown]

FROM [dbo].[Student] AS [t0]

WHERE [t0].[ID] = @p0

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

UPDATE [dbo].[Student]

SET [Name] = @p3, [Hometown] = @p4

WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Hometown] = @p2)

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [張小二]

-- @p2: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [南海觀音院]

-- @p3: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [張小三]

-- @p4: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [張家口張家寨張家營]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

3)使用linq to sql 執行刪除操作

執行代碼:

static void Delete(int id)

{

Console.WriteLine("-----------begin delete a student");

using (DbAppDataContext db = new DbAppDataContext())

{

db.Log = Console.Out;

//取出student

var student = db.Students.SingleOrDefault(s => s.ID == id);

if (student == null)

{

Console.WriteLine("student is null");

return;

}

db.Students.DeleteOnSubmit(student);

db.SubmitChanges();

}

Console.WriteLine("------------end Delete student");

}

生成的sql語句:

SELECT [t0].[ID], [t0].[Name], [t0].[Hometown]

FROM [dbo].[Student] AS [t0]

WHERE [t0].[ID] = @p0

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

DELETE FROM [dbo].[Student] WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Hometown

] = @p2)

-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]

-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [張小三]

-- @p2: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [張家口張家寨張家營]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1

總結:通過以上實踐可以看到使用linq to sql執行增改刪操作,非常方便,我們甚至不需要學習任何sql相關的知識。

我有兩點疑惑,請各位指點:

1.? 是否是在執行update和delete時必須先獲得實體,然后才能執行操作,我嘗試在update時,不去數據庫中獲取實體,而是自己聲明一個實體,然后去刪除,但是失敗了

2.? 在生成的update和delete的條件語句中包含name=@p和hometown=@p的語句,按理說link to sql已經知道id是唯一的主鍵,為什么還會傳這些沒有的條件進去的

總結

以上是生活随笔為你收集整理的vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。