小杰的blog
志不立,天下无可成之事
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 25 文章- 0 评论- 9
LINQ 笔记 - LINQ to SQL 基本数据操作
首先需要讲一下 DataContext 类 。
这个类是 LINQ to SQL 框架的主入口点。DataContext 是通过数据库连接映射的所有实体的源。
要在数据库操作上玩 SQL 除了 DataContext 还需要一个数据表的实体类。
在VS 2008 里面,可以直接使用生成 "LINQ to SQL 类" 来解决懒人的动手问题。
添加 "LINQ to SQL 类" 后,可以直接使用 "服务资源管理器" 添加所需要的数据表到 "LINQ to SQL 类",
这样就能直接生成 DataContext 的派生类和表的实体类。
下面这个例子,使用 Northwind 数据库。
//
NorthwindDataContext 是 DataContext 派生类, 用于连接数据库与实体
NorthwindDataContext n
=
new
NorthwindDataContext(
@"
Data Source=.;Initial Catalog=Northwind;Integrated Security=True
"
);
//
操作 Orders 数据表
var s
=
from n1
in
n.Orders
where
n1.OrderID
%
10
==
0
select
new
{
ID
=
n1.OrderID,
Name
=
n1.ShipName
}
;
foreach
(var s1
in
s)
{
Console.Write(s1.ID);
Console.Write(
"
|
"
);
Console.Write(s1.Name);
Console.WriteLine();
}
Console.ReadKey();
/**/
/*
10300 | Magazzini Alimentari Riuniti
10400 | Eastern Connection
10500 | La maison d'Asie
10600 | Hungry Coyote Import Store
10700 | Save-a-lot Markets
10800 | Seven Seas Imports
10900 | Wellington Importadora
11000 | Rattlesnake Canyon Grocery
*/
插入数据:
若要执行 SQL Insert,只需向您已创建的对象模型添加对象,然后对 DataContext 调用 SubmitChanges 即可。
NorthwindDataContext n
=
new
NorthwindDataContext(
@"
Data Source=.;Initial Catalog=Northwind;Integrated Security=True
"
);
//
建立对Region表的LINQ查询
var Regions
=
from n1
in
n.Region
select n1;
//
向Region插入数据
Region r
=
new
Region();
r.RegionID
=
999
;
r.RegionDescription
=
"
test
"
;
n.Region.InsertOnSubmit(r);
//
添加记录到
n.SubmitChanges();
//
通知数据库更改记录
//
开始查询,延迟执行
foreach
(var Region
in
Regions)
{
Console.Write(Region.RegionID);
Console.Write(
"
|
"
);
Console.Write(Region.RegionDescription);
Console.WriteLine();
}
Console.ReadKey();
/**/
/*
1 | Eastern
2 | Western
3 | Northern
4 | Southern
999 | test
*/
这里创建一个新示例数据库 DBTest.mdf
数据库只有一个 Table 表
CREATE
TABLE
[
Table
]
(
ID
int
NOT
NULL
IDENTITY
(
1
,
1
)
PRIMARY
KEY
,
Value
varchar
(
50
)
NULL
)
并为这个数据表添加一个"LINQ to SQL 类",该文件命名为:TestDB.dbml
更新数据:
//
把数据库中ID等于10记录的值修改为"null"
static
void
Main()
{
TestDBDataContext TestDB
=
new
TestDBDataContext(
@"
路径
"
DBTest.mdf
"
);
var L
=
from v
in
TestDB.Table
where
v.ID
==
10
select v;
foreach
(var I
in
L)
{
I.Value
=
"
null
"
;
//
修改值
}
TestDB.SubmitChanges();
//
向数据库提交刷新
foreach
(var I
in
L)
//
显示修改后的值
{
Console.WriteLine(I.Value);
}
Console.ReadKey();
}
删除记录:
//
把数据库中value为"null"的记录删除
static
void
Main()
{
TestDBDataContext TestDB
=
new
TestDBDataContext(
@"
路径
"
DBTest.mdf
"
);
var L
=
from v
in
TestDB.Table
where
v.Value
==
"
null
"
select v;
foreach
(var I
in
L)
{
TestDB.Table.DeleteOnSubmit(I);
//
删除记录
}
TestDB.SubmitChanges();
//
向数据库提交刷新
Console.ReadKey();
}
存储过程:
存储过程:
ALTER
PROCEDURE
insertToTable
@value
varchar
(
50
)
AS
insert
into
[
Table
]
(value)
values
(
@value
)
RETURN
在"服务器资源管理器"中打开这个存储过程,然后拖到刚才的"LINQ to SQL 类" -- TestDB.dbml 中,
在TestDB.designer.cs文件里面,IDE自动在 class TestDBDataContext(DataContext的派生类)
里面为这个insertToTable存储过程添加了如下方法代码:
[Function(Name
=
"
dbo.insertToTable
"
)]
public
int
insertToTable([Parameter(DbType
=
"
VarChar(50)
"
)]
string
value)
{
IExecuteResult result
=
this
.ExecuteMethodCall(
this
, ((MethodInfo)(MethodInfo.GetCurrentMethod())), value);
return
((
int
)(result.ReturnValue));
}
然后只需要在客户端使用一下这个方法,就完成了存储过程的调用:
static
void
Main()
{
TestDBDataContext TestDB
=
new
TestDBDataContext(
@"
路径
"
DBTest.mdf
"
);
TestDB.insertToTable(
"
AppTest
"
);
//
使用InsertToTable存储过程为"Table"表添加一行记录
}
Tag标签:
.NET
,
C#
,
linq
posted @ 2008-03-13 00:29
小杰
阅读(297)
评论(0)
编辑
收藏
所属分类:
笔记
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-06-20 23:28 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索
相关文章:
C#对于文件操作
什么是C#及.NET FrameWork
LINQ体验系列文章导航
本周ASP.NET英文技术文章推荐[03/16 - 03/22]:MVC、LINQ、Blog、C#、RSS、ViewManager
和 C#4.0 团队面对面
.NET 3.5 SP1 新引入的缺陷
Linq to SQL中select匿名类的问题
SQL疑难杂症
一个程序员的音乐·电影笔记
Ext + asp.net MVC + Linq to SQL
相关链接:
所属分类的其他文章:
WF笔记 – Workflow概念
WCF Demo – Http、TCP Host
LINQ TO SQL 笔记 — 存储过程、并发与事务
WCF笔记 - 绑定
WCF 笔记
正则表达式[转载整理]
LINQ 笔记 - LINQ to SQL 基本数据操作
LINQ 笔记 - 语法与关键字
LINQ 笔记- Lambda
Excel导入SQL
最新IT新闻:
MySpace推自助广告平台MyAds
Facebook创始人:信息共享或存摩尔定律
微软承认Vista用户账户控制功能有问题
资本寒冬侵袭中国视频网站 营销春天或不远
金融风暴波及全球创业板 中国概念股难独善其身
公告
订阅:
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
给我留言
查看留言
我参加的小组
创业交流
程序员音乐空间
设计模式
.NET 3.x
广州net
我参与的团队
北京.NET俱乐部(1/1555)
广州.NET俱乐部(0/1742)
我的标签
C#(9)
.NET(7)
linq(5)
WCF(3)
Lambda(1)
匿名函数(1)
匿名类型(1)
var(1)
MVC(1)
ADO.net(1)
随笔分类
笔记(19)
(rss)
胡思乱想(1)
(rss)
其他(1)
(rss)
收集整理(2)
(rss)
原创(5)
(rss)
转贴(1)
(rss)
随笔档案
2008年6月 (1)
2008年4月 (5)
2008年3月 (2)
2008年2月 (2)
2008年1月 (1)
2007年12月 (3)
2007年11月 (3)
2007年10月 (3)
所有连接
51aspx
codeproject
CSDN
MSDN 中文网站
ubuntu 中文社区
博客堂
微软社区
微软中文社区
最新评论
1. re: LINQ 笔记 - 语法与关键字
有意思没有 我会到MSDN上看、、
能不能发表一下你自己的见解??????? (yound)
阅读排行榜
1. LINQ TO SQL 笔记 — 存储过程、并发与事务(352)
2. WCF 笔记(347)
3. LINQ 笔记 - LINQ to SQL 基本数据操作(297)
4. LINQ 笔记 - 语法与关键字(263)
5. LINQ 笔记- Lambda(250)
评论排行榜
1. LINQ 笔记 - 语法与关键字(3)
2. LINQ 笔记- Lambda(2)
3. WCF 笔记(1)
4. WebServer 使用笔记(1)
5. 超级实的js代码大全 [转](1)