任务 5 – 修改数据库当中的数据
在这个任务中,您将会进行数据的获取并查看如何处理数据。四个基本的数据操作是Create、Retrieve、Update和Delete,和起来被称为CRUD。您可以看到LINQ to SQL是如何简单并直观的实现CRUD操作的。这个任务显示了如何使用create和update操作。
创建一个新的方法ModifyData,它修改数据库中的数据。然后,从Main函数中对该方法进行调用:
{
ModifyData();
}
static void ModifyData()
{
var db = new NorthwindDataContext();
var newCustomer = new Customer
{
CompanyName = "AdventureWorks Cafe",
CustomerID = "ADVCA"
};
Console.WriteLine("Number Created Before: {0}",
db.Customers.Where( c => c.CustomerID == "ADVCA" ).Count());
db.Customers.InsertOnSubmit(newCustomer);
db.SubmitChanges();
Console.WriteLine("Number Created After: {0}",
db.Customers.Where( c => c.CustomerID == "ADVCA" ).Count());
}
点击Ctrl+F5 来构建和运行应用程序。 注意,在数据库更新后输出到屏幕上的数据是不同的。然后,点击任意键以结束应用程序。
注意,在Add方法被调用后,将通过使用SubmitChanges方法,将变更提交到数据库。注意,一旦客户被插入后,它将由于主键唯一约束的问题,不能再被插入到数据库。因此,该程序只能运行一次。(或者,您可以修改插入的数据,再执行该程序。)
现在,将更新并修改数据库中的数据。添加下面的代码,它将为获取出来的第一个客户修改Contact name。
{
var db = new NorthwindDataContext();
var existingCustomer = db.Customers.First();
Console.WriteLine("Number Updated Before: {0}",
db.Customers.Where( c => c.ContactName == "New Contact" ).Count());
existingCustomer.ContactName = "New Contact";
db.SubmitChanges();
Console.WriteLine("Number Updated After: {0}",
db.Customers.Where( c => c.ContactName == "New Contact" ).Count());
}
现在,点击Ctrl+F5 来构建和运行应用程序。注意,拥有 “New Contact” 名称的联系人的数据发生了变化。点击任意键以结束应用程序。
任务 6 – 调用存储过程
Using the designer, recall adding a stored procedure along with the tables. In this task you call stored procedures.
回忆一下,在前面的任务中我们曾经使用设计器添加了一个存储过程。在这个任务中,您将调用存储过程。
创建一个新的方法,来打印出Top Most Expensive Products存储过程的调用结果,该存储过程曾经使用设计器被添加到NorthwindDataContext当中。
{
var db = new NorthwindDataContext();
foreach (var r in db.Ten_Most_Expensive_Products())
Console.WriteLine(r.TenMostExpensiveProducts + "\t" + r.UnitPrice);
}
现在,在Main 函数中调用这个方法:
{
InvokeSproc();
}
点击Ctrl+F5 来构建和运行应用程序。在查看输出结果后,点击任意键以结束应用程序。
当数据库不能通过动态的SQL语句访问时,您可以使用C# 3.0和LINQ来运行存储过程,访问数据库当中的数据。