linq to sql 对象模型和sql server 数据库中的对象映射关系:
LINQ to SQL 对象模型的基本元素 | SQL Server 数据库中的对象 |
实体类 | 表 |
属性或字段 | 列 |
关联 | 外键关系 |
方法 | 存储过程或函数 |
数据上下文
Datacontext 又称为数据上下文,它是LINQ to SQL提供操作数据库的入口、如果使用LINQ to SQL 操作数据库,则首先需要为该数据库创建一个继承于DataContext类的自定义的数据上下文类,并在该类中定义表,以及操作数据的方法。
DataContext类的方法
执行SQL命令的ExecuteQuery()方法
(1)创建LinqDBDataContext类的实例db。
(2)创建被执行的SQL语句。
(3)调用ExecuteQuery()方法执行上述指定的SQL语句,查询结果保存到result变量中。
(4)使用foreach语句显示result变量中的信息。
private void ExecuteSqlQuery( )
{
//创建LinqDB 数据库上下文的实例
lingDBDataContext db =new LinqDBDataContext(
LinqSystem.LinqDBConmetionStrin)
//创建SQL 语句
string sql="SELECT TOP 5 * FROM UserInfo";
IE numerable<UserInfo> users
= db.ExecuteQuery<UserInfo
//显示查询的结果
foreach (UserInfo u in users)
{
Response.Wite(用户名称:" + u.Usemame +"<br/>");
}
}
显示结果为:
处理Table<T>类型的结果
使用Table<T>能够方便地操作数据库中的数据,如插入数据到数据库、修改数据库中的数据、删除数据库中的数据。
方法名称 | 说明 |
DeleteAllOnSubmit | 将集合中的所有实体置于pending delete状态 |
DeleteOnSubmit | 将此表中的实体置为pending 状态 |
InsertAllOnSubmit | 将集合中所有处于pending insert 状态的实体添加到DataContext |
InsertOnSubmit | 将处于pending insert状态的实体添加到此Table(TEntity) |
private void InsertRoleO{
//创建LinqDB 数据库的数据上下文实例
LinqDBDataContex db= new LinqDBDataContext(
LinqSystem.LinqDBConnectionString) ;
Response.Write("添加前角色的数量:“+ db.Role.CountO +"<br/>");
//创建一个新的角色
Role role= new Role{ RoleName="新的角色"};
//将新的角色添加到数据库中
db.Role.InsertOnSubmit(role);
db.SubmitChanges();
Response.Write("添加后角色的数量:"+db.Role.Count());
}
显示结果为:
添加实体的Add()方法
(1)Add()方法能够将元素或实体添加到EntitySet<T>集合中。新添加的元素或实体位于EntitySet<T>集合的末尾处。
创建LinqDBDataContext类的实例db。
(2)获取与第一个用户相关的商品信息,并保存为productsforFirstUser实例。其中,该实例的数据类型为EntitySet<Product>。
显示添加新的实体之前productsforFirstUser实例中的实体的数量。
(3)创建一个新的实体P(实体的数据类型为Product),并设置了该实例的属性的值。
(4)调用Add()方法把实体p弹夹到productsforFirstUser实例中。
(5)调用SubmitChanges()方法将上述修改提交到数据库中。
(6)显示添加新的实体之后productsforFristUser实例中的实体的数量。
private void ShowEntitySetadd (){
//创建LinqDB 数据库上下文的实例
LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
//获取第一个用户的商品信息
EntitySet<Product> productsforFirstUser
db.Userlnfo.First<UserInfo>().Product;
//显示商品数量
Response.Write(添加商品之前的数量:"
+ productsforFirstUser.Count.ToString +" <br/>");
//创建一个新对象
Product p= new ProductO;
p.Name="New Product" + DateTime.Now.ToSting()
p.Price= 100.0m;
p.LasterDate= DateTime.Now;
p.PicureUrl= string.Empty;
p.Remark= string.Empty;
p.SaleNumber =0;
p.Status= 1;
p.Stock= 100;
p.UserID= 1;
p.ViewCount= 0;
p.CategoryID= 2;
p.CreateDate= DateTime.Now;
//添加对象到productsforFirstUer 集合中
productsforFirstUser.Add(p);
//提交更改到数据库
db.SubmitChanges();
//显示商品数量
Response.Write("添加商品之后的数量:" +
productsforFirstUero +" <br/>");
}
显示结果为:
简单查询
查询UserInfo表中ID列的值小于10,且Username列的值的长度大于5的数据。
var result=from user in db.UserInfo where user.ID<10&&user.Username.Length>5 select user;
动态数据支持
1.创建ASP.NET Dynamic Data 应用程序
2.添加数据模型
3.修改Global.asax文件
4.运行显示