用LINQ to SQL 进行数据访问、更新和删除(附Demo示例程序下载)
2008-06-29 07:33
856 查看
[align=center]用LINQ to SQL 进行数据访问、更新和删除(附Demo示例程序下载)[/align]
[align=right]Posted by EntLib.com, http://www.EntLib.com[/align]
[align=right]2008-6-29[/align]
本示例主要包括如下内容:
映射LINQ到数据库 – LINQ to SQL定义新的C# 类、properties、attributes,通过在程序中映射数据库表到实体对象,可以与数据库表交互。
DataContext 类 – 该类支持LINQ的ORM功能。
本示例程序采用Northwind 数据库中的Customers 表。
![](https://oscdn.geek-share.com/Uploads/Images/Content/200806/916412219de69bcffe00804815b21ede.gif)
Demo 示例程序下载!
代码分析:
映射实体类到数据库表:
[align=left] [Table(Name = "Customers")][/align]
[align=left] public class Customer[/align]
[align=left] {[/align]
[align=left] private string _CustomerID;[/align]
[align=left] private string _CompanyName;[/align]
[align=left] private string _ContactName;[/align]
private string _ContactTitle;
映射字段和属性到数据表列:
[align=left] [Column(Name = "CustomerID", Storage = "_CustomerID", DbType = "nchar NOT NULL",[/align]
[align=left] IsPrimaryKey = true, IsDbGenerated = false)][/align]
[align=left] public string CustomerID[/align]
[align=left] {[/align]
[align=left] get { return _CustomerID; }[/align]
[align=left] set { _CustomerID = value; }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [Column(Name = "CompanyName", Storage = "_CompanyName", DbType = "nvarchar NOT NULL")][/align]
[align=left] public string CompanyName[/align]
[align=left] {[/align]
[align=left] get { return _CompanyName; }[/align]
[align=left] set { _CompanyName = value; }[/align]
}
创建DataContext 对象:
[align=left] public partial class CustomersDataContext : DataContext[/align]
[align=left] {[/align]
[align=left] public Table<Customer> Customers;[/align]
[align=left] public CustomersDataContext(String connString) : base(connString) { }[/align]
}
查询数据库表Customers / 新增数据记录:
[align=left] CustomersDataContext customersDataContext = new CustomersDataContext(connString);[/align]
[align=left] // Redirect the log to the console[/align]
[align=left] customersDataContext.Log = Console.Out;[/align]
[align=left] [/align]
[align=left] var query = from cust in customersDataContext.Customers[/align]
[align=left] where cust.CustomerID.StartsWith("AN")[/align]
[align=left] select new { cust.CustomerID, cust.CompanyName, cust.ContactName, cust.ContactTitle };[/align]
[align=left] [/align]
[align=left] foreach (var row in query)[/align]
[align=left] {[/align]
[align=left] ObjectDumper.Write(row);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] // Console.WriteLine(customers.GetCommand(query).CommandText);[/align]
[align=left] [/align]
[align=left] Customer customer = new Customer();[/align]
[align=left] customer.CustomerID = "Jacky";[/align]
[align=left] customer.CompanyName = "EntLib.com";[/align]
[align=left] customer.ContactName = "http://www.EntLib.com";[/align]
[align=left] customer.ContactTitle = "Developer";[/align]
[align=left] [/align]
[align=left] customersDataContext.Customers.InsertOnSubmit(customer);[/align]
[align=left] // The SubmitChanges Method propagates changes to the database[/align]
customersDataContext.SubmitChanges();
示例程序界面如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/200806/4180ae950fdd29f84687c71f811c23a6.gif)
如下是Console数据的SQL脚本,分别为查询、更新和删除操作。
[align=left]SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle][/align]
[align=left]FROM [Customers] AS [t0][/align]
[align=left]WHERE [t0].[CustomerID] LIKE @p0[/align]
[align=left]-- @p0: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [AN%][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]CustomerID=ANATR CompanyName=Ana Trujillo Emparedados y helados ContactName=Ana Trujillo ContactTitle=Owner[/align]
[align=left]CustomerID=ANTON CompanyName=Antonio Moreno Taquería ContactName=Antonio Moreno ContactTitle=Owner[/align]
[align=left]INSERT INTO [Customers]([CustomerID], [CompanyName], [ContactName], [ContactTitle])[/align]
[align=left]VALUES (@p0, @p1, @p2, @p3)[/align]
[align=left]-- @p0: Input NChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- @p1: Input NVarChar (Size = 10; Prec = 0; Scale = 0) [EntLib.com][/align]
[align=left]-- @p2: Input NVarChar (Size = 21; Prec = 0; Scale = 0) [http://www.EntLib.com][/align]
[align=left]-- @p3: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [Developer][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]{Inserts: 0, Deletes: 0, Updates: 0}[/align]
[align=left]SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle][/align]
[align=left]FROM [Customers] AS [t0][/align]
[align=left]WHERE [t0].[CustomerID] = @p0[/align]
[align=left]-- @p0: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]UPDATE [Customers][/align]
[align=left]SET [CompanyName] = @p4, [ContactTitle] = @p5[/align]
[align=left]WHERE ([CustomerID] = @p0) AND ([CompanyName] = @p1) AND ([ContactName] = @p2) AND ([ContactTitle] = @p3)[/align]
[align=left]-- @p0: Input NChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- @p1: Input NVarChar (Size = 10; Prec = 0; Scale = 0) [EntLib.com][/align]
[align=left]-- @p2: Input NVarChar (Size = 21; Prec = 0; Scale = 0) [http://www.EntLib.com][/align]
[align=left]-- @p3: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [Developer][/align]
[align=left]-- @p4: Input NVarChar (Size = 19; Prec = 0; Scale = 0) [EntLib.com-专业电子商务系统][/align]
[align=left]-- @p5: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [高级软件开发工程师][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle][/align]
[align=left]FROM [Customers] AS [t0][/align]
[align=left]WHERE [t0].[CustomerID] = @p0[/align]
[align=left]-- @p0: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]DELETE FROM [Customers] WHERE ([CustomerID] = @p0) AND ([CompanyName] = @p1) AND ([ContactName] = @p2) AND ([ContactTitle] = @p3)[/align]
[align=left]-- @p0: Input NChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- @p1: Input NVarChar (Size = 19; Prec = 0; Scale = 0) [EntLib.com-专业电子商务系统][/align]
[align=left]-- @p2: Input NVarChar (Size = 21; Prec = 0; Scale = 0) [http://www.EntLib.com][/align]
[align=left]-- @p3: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [高级软件开发工程师][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=right]Posted by EntLib.com, http://www.EntLib.com[/align]
[align=right]2008-6-29[/align]
本示例主要包括如下内容:
映射LINQ到数据库 – LINQ to SQL定义新的C# 类、properties、attributes,通过在程序中映射数据库表到实体对象,可以与数据库表交互。
DataContext 类 – 该类支持LINQ的ORM功能。
本示例程序采用Northwind 数据库中的Customers 表。
![](https://oscdn.geek-share.com/Uploads/Images/Content/200806/916412219de69bcffe00804815b21ede.gif)
Demo 示例程序下载!
代码分析:
映射实体类到数据库表:
[align=left] [Table(Name = "Customers")][/align]
[align=left] public class Customer[/align]
[align=left] {[/align]
[align=left] private string _CustomerID;[/align]
[align=left] private string _CompanyName;[/align]
[align=left] private string _ContactName;[/align]
private string _ContactTitle;
映射字段和属性到数据表列:
[align=left] [Column(Name = "CustomerID", Storage = "_CustomerID", DbType = "nchar NOT NULL",[/align]
[align=left] IsPrimaryKey = true, IsDbGenerated = false)][/align]
[align=left] public string CustomerID[/align]
[align=left] {[/align]
[align=left] get { return _CustomerID; }[/align]
[align=left] set { _CustomerID = value; }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [Column(Name = "CompanyName", Storage = "_CompanyName", DbType = "nvarchar NOT NULL")][/align]
[align=left] public string CompanyName[/align]
[align=left] {[/align]
[align=left] get { return _CompanyName; }[/align]
[align=left] set { _CompanyName = value; }[/align]
}
创建DataContext 对象:
[align=left] public partial class CustomersDataContext : DataContext[/align]
[align=left] {[/align]
[align=left] public Table<Customer> Customers;[/align]
[align=left] public CustomersDataContext(String connString) : base(connString) { }[/align]
}
查询数据库表Customers / 新增数据记录:
[align=left] CustomersDataContext customersDataContext = new CustomersDataContext(connString);[/align]
[align=left] // Redirect the log to the console[/align]
[align=left] customersDataContext.Log = Console.Out;[/align]
[align=left] [/align]
[align=left] var query = from cust in customersDataContext.Customers[/align]
[align=left] where cust.CustomerID.StartsWith("AN")[/align]
[align=left] select new { cust.CustomerID, cust.CompanyName, cust.ContactName, cust.ContactTitle };[/align]
[align=left] [/align]
[align=left] foreach (var row in query)[/align]
[align=left] {[/align]
[align=left] ObjectDumper.Write(row);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] // Console.WriteLine(customers.GetCommand(query).CommandText);[/align]
[align=left] [/align]
[align=left] Customer customer = new Customer();[/align]
[align=left] customer.CustomerID = "Jacky";[/align]
[align=left] customer.CompanyName = "EntLib.com";[/align]
[align=left] customer.ContactName = "http://www.EntLib.com";[/align]
[align=left] customer.ContactTitle = "Developer";[/align]
[align=left] [/align]
[align=left] customersDataContext.Customers.InsertOnSubmit(customer);[/align]
[align=left] // The SubmitChanges Method propagates changes to the database[/align]
customersDataContext.SubmitChanges();
示例程序界面如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/200806/4180ae950fdd29f84687c71f811c23a6.gif)
如下是Console数据的SQL脚本,分别为查询、更新和删除操作。
[align=left]SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle][/align]
[align=left]FROM [Customers] AS [t0][/align]
[align=left]WHERE [t0].[CustomerID] LIKE @p0[/align]
[align=left]-- @p0: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [AN%][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]CustomerID=ANATR CompanyName=Ana Trujillo Emparedados y helados ContactName=Ana Trujillo ContactTitle=Owner[/align]
[align=left]CustomerID=ANTON CompanyName=Antonio Moreno Taquería ContactName=Antonio Moreno ContactTitle=Owner[/align]
[align=left]INSERT INTO [Customers]([CustomerID], [CompanyName], [ContactName], [ContactTitle])[/align]
[align=left]VALUES (@p0, @p1, @p2, @p3)[/align]
[align=left]-- @p0: Input NChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- @p1: Input NVarChar (Size = 10; Prec = 0; Scale = 0) [EntLib.com][/align]
[align=left]-- @p2: Input NVarChar (Size = 21; Prec = 0; Scale = 0) [http://www.EntLib.com][/align]
[align=left]-- @p3: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [Developer][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]{Inserts: 0, Deletes: 0, Updates: 0}[/align]
[align=left]SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle][/align]
[align=left]FROM [Customers] AS [t0][/align]
[align=left]WHERE [t0].[CustomerID] = @p0[/align]
[align=left]-- @p0: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]UPDATE [Customers][/align]
[align=left]SET [CompanyName] = @p4, [ContactTitle] = @p5[/align]
[align=left]WHERE ([CustomerID] = @p0) AND ([CompanyName] = @p1) AND ([ContactName] = @p2) AND ([ContactTitle] = @p3)[/align]
[align=left]-- @p0: Input NChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- @p1: Input NVarChar (Size = 10; Prec = 0; Scale = 0) [EntLib.com][/align]
[align=left]-- @p2: Input NVarChar (Size = 21; Prec = 0; Scale = 0) [http://www.EntLib.com][/align]
[align=left]-- @p3: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [Developer][/align]
[align=left]-- @p4: Input NVarChar (Size = 19; Prec = 0; Scale = 0) [EntLib.com-专业电子商务系统][/align]
[align=left]-- @p5: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [高级软件开发工程师][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle][/align]
[align=left]FROM [Customers] AS [t0][/align]
[align=left]WHERE [t0].[CustomerID] = @p0[/align]
[align=left]-- @p0: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
[align=left] [/align]
[align=left]DELETE FROM [Customers] WHERE ([CustomerID] = @p0) AND ([CompanyName] = @p1) AND ([ContactName] = @p2) AND ([ContactTitle] = @p3)[/align]
[align=left]-- @p0: Input NChar (Size = 5; Prec = 0; Scale = 0) [Jacky][/align]
[align=left]-- @p1: Input NVarChar (Size = 19; Prec = 0; Scale = 0) [EntLib.com-专业电子商务系统][/align]
[align=left]-- @p2: Input NVarChar (Size = 21; Prec = 0; Scale = 0) [http://www.EntLib.com][/align]
[align=left]-- @p3: Input NVarChar (Size = 9; Prec = 0; Scale = 0) [高级软件开发工程师][/align]
[align=left]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8[/align]
相关文章推荐
- WPF DataGrid 和LINQ to SQL示例程序之一 (提供源代码下载)
- LINQ to Objects / LINQ to SQL / LINQ to XML 示例程序下载
- LinqToSql中更新或删除数据时"找不到行或者行已更改"的解决办法
- [导入]Silverlight 2 (beta1)数据操作(5)——使用LINQ to SQL进行数据CRUD操作(上)
- MVC中使用Linq To Sql进行数据查询及分页
- 转载:SQL through PowerShell 使用Powershell访问SQL并对数据进行读写增加删除操作
- 扩展LINQ to SQL:使用Lambda Expression批量删除数据
- silverlight+wcf+linq to sql访问数据
- Microsoft ASP.NET MVC Preview 5 及LINQ TO SQL最新版开发示例演示(提供源码下载)
- Microsoft ASP.NET MVC Preview 5 及LINQ TO SQL最新版开发示例演示(提供源码下载)
- 在Linq to Sql中管理并发更新时的冲突(3):使用记录的时间戳进行检测
- 在Linq to Sql中管理并发更新时的冲突(3):使用记录的时间戳进行检测
- DataRabbit 轻量的数据访问框架(14)-- DataRabbit 3.0 与 Linq to sql 性能比较
- LinQ To SQL 添加、删除、更新C#
- 使用LINQ to SQL更新数据库
- linqtosql - 插入 删除 更新 查询
- 在linq to sql中处理“更新已被其它用户删除对象”的错误
- Silverlight ——使用LINQ to SQL进行数据CRUD操作(上)
- 步步为营VS 2008 + .NET 3.5(9) - DLINQ(LINQ to SQL)之执行SQL语句的添加、查询、更新和删除
- 步步为营VS 2008 + .NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除