您的位置:首页 > 数据库

用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 表。


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();

示例程序界面如下:



如下是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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐