国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Linq之Linq to Sql

2019-11-17 02:34:38
字體:
來源:轉載
供稿:網友

Linq之Linq to Sql

目錄

寫在前面

系列文章

Linq to sql

總結

寫在前面

上篇文章介紹了linq to xml的相關內容,linq to xml提供一種更便捷的創建xml樹,及查詢的途徑。這篇文章將繼續介紹linq to sql的內容。個人覺得linq to sql在實際開發中在中小型項目中用的比較多,在中小型項目用ef或者nhibernate這些orm確實有點重量級。Linq to Sql提供了豐富的功能,完全可以滿足日常數據訪問的需求。使用方法也非常簡單、靈活。

系列文章

Linq之Lambda表達式初步認識

Linq之Lambda進階

Linq之隱式類型、自動屬性、初始化器、匿名類

Linq之擴展方法

Linq之ExPRession初見

Linq之Expression進階

Linq之Expression高級篇(常用表達式類型)

Linq之常見關鍵字

Linq之延遲加載特性

Linq之Linq to Objects

Linq之Linq to XML

Linq to sql

LINQ to SQL 是 .NET Framework 3.5 版的一個組件,提供用于將關系數據作為對象管理的運行時基礎結構。

在 LINQ to SQL 中,關系數據庫的數據模型映射到用開發人員所用的編程語言表示的對象模型。 當應用程序運行時,LINQ to SQL 會將對象模型中的語言集成查詢轉換為 SQL,然后將它們發送到數據庫進行執行。當數據庫返回結果時,LINQ to SQL 會將它們轉換回您可以用您自己的編程語言處理的對象。

具體怎么使用,還是看一個例子吧。

準備一個測試數據庫

添加linq to sql類

創建好后,在會在窗口中默認打開Linq2Sql.dbml,然后選擇服務器資源管理器,添加映射關系

添加連接

將表拖入Linq2Sql.dbml窗口

到此,數據庫映射關系已經完成,然后你在解決方案資源管理器中會看到如下的文件

settings.settings中是數據庫連接字符串的可視化管理,你可以在這里面進行連接字符串的修改,添加操作。

App.config中是生成的連接字符串

 1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3     <configSections> 4     </configSections> 5     <connectionStrings> 6         <add name="Wolfy.Linq2Sql.Properties.Settings.TestConnectionString" 7             connectionString="Data Source=.;Initial Catalog=Test;User ID=sa;PassWord=sa" 8             providerName="System.Data.SqlClient" /> 9     </connectionStrings>10     <startup> 11         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />12     </startup>13 </configuration>

查看Linq2Sql.designer.cs,其中DataContext類為linq to sql的主入口點,也就是咱們經常說的數據庫上下文。

好了,到此與數據庫的映射關系已經完成,下面看看linq to sql的相關操作。

 1        static void Main(string[] args) 2         { 3             //創建數據庫上下文對象 4             Linq2SqlDataContext context = new Linq2SqlDataContext(); 5             TB_Customer customer = new TB_Customer() { ID = 1, Name = "wolfy", Address = "北京海淀" }; 6             //插入 7             context.TB_Customer.InsertOnSubmit(customer); 8             List<TB_Customer> customers = new List<TB_Customer>() {  9             new TB_Customer(){ ID=2, Name="zhangsan", Address="上海"},10             new TB_Customer(){ID=3, Name="lisi",Address="河南"}11             };12             //批量插入13             context.TB_Customer.InsertAllOnSubmit<TB_Customer>(customers);14             //提交數據庫15             context.SubmitChanges();16 17         }

生成的sql語句

exec sp_executesql N'INSERT INTO [dbo].[TB_Customer]([Name], [Address])VALUES (@p0, @p1)SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 nvarchar(4000),@p1 nvarchar(4000)',@p0=N'wolfy',@p1=N'北京海淀'exec sp_executesql N'INSERT INTO [dbo].[TB_Customer]([Name], [Address])VALUES (@p0, @p1)SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 nvarchar(4000),@p1 nvarchar(4000)',@p0=N'zhangsan',@p1=N'上海'exec sp_executesql N'INSERT INTO [dbo].[TB_Customer]([Name], [Address])VALUES (@p0, @p1)SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 nvarchar(4000),@p1 nvarchar(4000)',@p0=N'lisi',@p1=N'河南'

批量刪除id>=2的客戶信息

1             Linq2SqlDataContext context = new Linq2SqlDataContext();2             var query = from c in context.TB_Customer3                         where c.ID >= 24                         select c;5             //批量刪除6             context.TB_Customer.DeleteAllOnSubmit(query);7             //提交數據庫8             context.SubmitChanges();

生成的sql語句

exec sp_executesql N'DELETE FROM [dbo].[TB_Customer] WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Address] = @p2)',N'@p0 int,@p1 nvarchar(4000),@p2 nvarchar(4000)',@p0=2,@p1=N'zhangsan',@p2=N'上海'exec sp_executesql N'DELETE FROM [dbo].[TB_Customer] WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Address] = @p2)',N'@p0 int,@p1 nvarchar(4000),@p2 nvarchar(4000)',@p0=3,@p1=N'lisi',@p2=N'河南'

修改id為1的客戶的姓名

1             Linq2SqlDataContext context = new Linq2SqlDataContext();2             TB_Customer customer = context.TB_Customer.SingleOrDefault(c => c.ID == 1);3             customer.Name = "zhangsan";4             //提交數據庫5             context.SubmitChanges();

sql語句

exec sp_executesql N'UPDATE [dbo].[TB_Customer]SET [Name] = @p3WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Address] = @p2)',N'@p0 int,@p1 nvarchar(4000),@p2 nvarchar(4000),@p3 nvarchar(4000)',@p0=1,@p1=N'wolfy',@p2=N'北京海淀',@p3=N'zhangsan'

查出id為1的客戶下的所有的訂單信息。

1             Linq2SqlDataContext context = new Linq2SqlDataContext();2             //customer和order表關聯查詢3             var query = from o in context.TB_Order4                         join c in context.TB_Customer5                         on o.ID equals c.ID6                         select new { CustomerID = c.ID, OrderID = o.ID, OrderDate = o.OrderDate };7             //提交數據庫8             context.SubmitChanges();

sql語句

SELECT [t1].[ID] AS [CustomerID], [t0].[ID] AS [OrderID], [t0].[OrderDate]FROM [dbo].[TB_Order] AS [t0]INNER JOIN [dbo].[TB_Customer] AS [t1] ON [t0].[ID] = [t1].[ID]SELECT [t1].[ID] AS [CustomerID], [t0].[ID] AS [OrderID], [t0].[OrderDate]FROM [dbo].[TB_Order] AS [t0]INNER JOIN [dbo].[TB_Customer] AS [t1] ON [t0].[ID] = [t1].[ID]

總結

本篇介紹了linq to sql的相關內容,舉了一個使用linq to sql操作數據庫的例子,希望能幫你對linq to sql快速上手提供幫助。

參考文章

http://kb.VEVb.com/page/70851/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正宁县| 肥西县| 买车| 黄冈市| 中超| 永寿县| 连南| 卢龙县| 铜川市| 屯昌县| 盐亭县| 调兵山市| 青川县| 余江县| 太康县| 深州市| 祁门县| 金溪县| 邵武市| 玛曲县| 石泉县| 方正县| 昌都县| 邵东县| 阿拉善盟| 海城市| 乐昌市| 莎车县| 高平市| 锦州市| 黄石市| 巴彦淖尔市| 涪陵区| 卢湾区| 新化县| 沂南县| 澳门| 平遥县| 阿巴嘎旗| 内乡县| 自治县|