LINQ小测,易用性是不错。可是性能还有待挖掘.
序:
一直有关注linq.从来都没有在实际的项目中使用过。最近想将其用于实际项目中,实际了解一下其生成的SQL语句。
1

2
public static void LinqTest()3

{4
//新建一个linq to sql 名字叫 Northwind,把相关的几个表托进去。测试开始5
NorthwindDataContext nd = new NorthwindDataContext();6

7
Console.WriteLine(nd.Categories.Count());8
//这里执行了SQL sql2k9
//exec sp_reset_connection10
//SELECT COUNT(*) AS [value] FROM [dbo].[Categories] AS [t0]11
Console.Read();12

13
System.Data.Linq.Table<Products> products = nd.Products;14

15

/**//*IQueryable<Products>*/16
var p = from s in products where s.CategoryID == 1 select s;17
//这个非结果。存放着等待执行的SQL语句18
Console.Read();19
//这里还未执行20
Console.WriteLine("开始执行SQL语句");21

22
foreach (var item in p)23

{24
Console.WriteLine(item.ProductName);25
}26
//这里执行了SQL27
//exec sp_executesql N'SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]28
//FROM [dbo].[Products] AS [t0]29
//WHERE [t0].[CategoryID] = @p0', N'@p0 int', @p0 = 130
Console.WriteLine("p执行了吗");31
Console.Read();32

33
foreach (var item in p)34

{35
Console.WriteLine(item.Categories.CategoryName);//Beverages36
item.Categories.CategoryName = "Beverages";37
}38
//这里执行了SQL39
//exec sp_executesql N'SELECT [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]40
//FROM [dbo].[Products] AS [t0]41
//WHERE [t0].[CategoryID] = @p0', N'@p0 int', @p0 = 142
//------------------------------------------居然又重覆调用了一次。晕倒43
//exec sp_executesql N'SELECT [t0].[CategoryID], [t0].[CategoryName], [t0].[Description], [t0].[Picture]44
//FROM [dbo].[Categories] AS [t0]45
//WHERE [t0].[CategoryID] = @p0', N'@p0 int', @p0 = 146
Console.Read();47

48
Console.WriteLine("按回车更新");49

50
Console.Read();51
nd.SubmitChanges();52
//当数据有发生改变时---更改上面的类名赋值53
//SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION54
//exec sp_executesql N'UPDATE [dbo].[Categories]55
//SET [CategoryName] = @p256
//WHERE ([CategoryID] = @p0) AND ([CategoryName] = @p1)', N'@p0 int,@p1 nvarchar(9),@p2 nvarchar(5)', @p0 = 1, @p1 = N'Beverages', @p2 = N'bbbbb'57
//COMMIT TRANSACTION58
Console.Read();59
60
//当数据没有发生改变时61
//SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION62
//COMMIT TRANSACTION63
//也执行了SQL语句。64

65
var list = p.ToList<products>();66
//--------------67
Console.WriteLine("效率提升");68

69
Console.Read();70
foreach (var item in list)71

{72
Console.WriteLine(item.ProductName);73
}74
Console.Read();75
foreach (var item in list)76

{77
Console.WriteLine(item.ProductName);78
}79
Console.Read();80

81

82
}83

易用性是不错,可是有些地方,性能可能不是很理想。可能还有一些“机关”可以开启的,只是我还不知道。
回头搞一个实际些的例子再测试一下。
浙公网安备 33010602011771号