linq执行sql
⑴ 什么是ling to sql
ling to sql 首先得先解释 linq
LINQ = 语言集成查询(Language INtegrated Query)
是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
举个例子,比如你的C#代码里面,有个 Apple 对象,对象有 颜色这个属性
当给你一个 Apple 类的列表,要你返回所有 颜色为红色的。
如果没有 LINQ 的话, 那么就是 for 循环, 然后 if
使用 LINQ 的话, 就是有点像数据库的 SQL 语句的写法
var query =
from apple in appleList
where apple.Color == "红色"
select apple;
关于 LINQ 的例子代码:
http://hi..com/wangqing999/blog/item/40982215d2625371ca80c494.html
LINQ to SQL 呢?
就是首先是通过开发工具, 通过读取数据库中的表结构,来创建 C# / VB.NET 的代码
比如你有个表 Test, 有2个字段 id, value
那么开发工具会产生一个类, 叫 Test. 这个类有2个属性 id, value
然后你可以通过写 LINQ 的方式, 来查询数据库里面的数据。
var query =
from test in context.Test
select test;
关于 LINQ to SQL 的例子代码:
http://hi..com/wangqing999/blog/item/143b63da8185904594ee37ee.html
⑵ 这两段sql语句用linq语句怎么写
你的语句好像错了,ON (OD.OrderID=OD.OrderID)这个应该是 ON (O.OrderID=OD.OrderID)
对于问题一,请参考这:
using (var db = new DataClasses1DataContext())
{
var list = from c in db.Customers
join o in db.Orders on c.CustomerID equals o.CustomerID
join od in db.Order_Details on o.OrderID equals od.OrderID
select new{c.Country,od};
var result = from d in list
group d by d.Country into g
orderby g.Sum(c => (c.od.UnitPrice * c.od.Quantity) * (1 - (decimal)c.od.Discount)) descending
select g.Key;
//result 即为最终想要的数据
}
对于问题二,请参考这:
using (var db = new DataClasses1DataContext())
{
foreach(var item in db.Order_Details.Where(c=>c.Procts.Categories.CategoryName=="Seafood"))
{
db.Order_Details.DeleteOnSubmit(item);
}
db.SubmitChanges();
}
⑶ LINQ TO SQL 有什么优缺点啊
首先,在了解 LINQ To SQL 有什么优点之前,我们有必要首先了解下,微软为什么弄了这么个东西。 搞出这个东西来有什么目的:——当然是为了 满足不知道怎么操作数据的程序员开发设计的,并不是每个程序员 都会直接操作数据库,LinQ 可以让他们以一种面向数据对象的方式来思考,及持久化他们的数据!
好处: 容易学习,书写简单。 在开发 中小型 项目 的时候推荐使用!因为可以节省时间!
它可以很方便的调用 存储过程、SQL函数
缺点:由于直接封装了所有的数据持久操作。导致批量持久数据会产生效率问题
尤其体现在批量跟新数据,它会在内存中保持大量的数据模型。
总结:中小型 项目 就放心用吧! 不过从技术 储备的角度来说,建议 看看entity framework
⑷ 哪位高手知道vs2010中的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在我们意料之外。呵呵。我的感觉是这样
⑸ LINQ to SQL模型 是什么意思
通过使用 LINQ to SQL,您可以使用 LINQ 技术访问 SQL 数据库,就像您访问内存中的集合一样。
例如,在下面的代码中,创建了 nw 对象来表示 Northwind 数据库,将 Customers 表作为目标,筛选出了来自 London 的 Customers 行,并选择了一个表示 CompanyName 的字符串以进行检索。
执行循环时,将检索到 CompanyName 值的集合。
//NorthwndinheritsfromSystem.Data.Linq.DataContext.
Northwndnw=newNorthwnd(@"northwnd.mdf");
//or,
//Northwndnw=newNorthwnd("Database=Northwind;Server=server_name;IntegratedSecurity=SSPI");
varcompanyNameQuery=
fromcustinnw.Customers
wherecust.City=="London"
selectcust.CompanyName;
foreach(varcustomerincompanyNameQuery)
{
Console.WriteLine(customer);
}
我觉得详细的介绍,你还是直接看MSDN:
http://msdn.microsoft.com/zh-cn/library/bb386976.aspx