[转]Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务
本节,直接写通过代码来学习。这些基本操作都比较简单,与这些基本操作相关的内容在之前的1至6节基本介绍完毕。
l增加:
方法1:使用AddToXXX(xxx)方法:实例代码如下:
using (var edm =new NorthwindEntities())
{
Customers c = new Customers { CustomerID = "c#", City = "成都市", Address ="中国四川省", CompanyName ="cnblogs", Country = "中国", Fax ="10086", Phone = "1008611", PostalCode ="610000", Region = "天府广场", ContactName ="风车车.Net" };
edm.AddToCustomers(c);
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID =="c#");
Console.WriteLine("CustomerId={0},City={1}", addc.CustomerID, addc.City);
}
方法2:使用ObjectContext的AddObject(string entitySetName,object entity)方法。实例代码如下:
using (var edm =new NorthwindEntities())
{
Customers c = new Customers { CustomerID = "c2", City = "成都市2", Address ="中国四川省2", CompanyName ="cnblogs", Country = "中国", Fax ="10086", Phone = "1008611", PostalCode ="610000", Region = "天府广场", ContactName ="风车车.Net" };
edm.AddObject("Customers", c);
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID =="c2");
Console.WriteLine("CustomerId={0},City={1}", addc.CustomerID, addc.City);
}
其中,在代码中,需要注意的是:AddObject方法中参数“entitySetName”就是指对应实体名称,应该是:“Customers”,而不是“NorthwindEntities.Customers”;
l更新:
using (var edm =new NorthwindEntities())
{
Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID =="c2");
addc.City = "CD";
addc.ContactName = "cnblogs";
addc.Country = "CN";
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers updatec = edm.Customers.FirstOrDefault(cc => cc.CustomerID =="c2");
Console.WriteLine("CustomerId={0},City={1}", updatec.CustomerID, updatec.City);
}
其中,需要注意的是:不能去更新主键,否则会报“System.InvalidOperationException :属性“xxx”是对象的键信息的一部分,不能修改。”
l删除:
实例代码如下:
using (var edm =new NorthwindEntities())
{
Customers deletec = edm.Customers.FirstOrDefault(cc => cc.CustomerID =="c2");
edm.DeleteObject(deletec);
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers c = edm.Customers.FirstOrDefault(cc => cc.CustomerID =="c2");
Assert.AreEqual(c, null);
}
l事务:
实例代码如下:
NorthwindEntities edm =null;
System.Data.Common.DbTransaction tran =null;
try
{
edm = new NorthwindEntities();
edm.Connection.Open();
tran = edm.Connection.BeginTransaction();
Customers cst = edm.Customers.FirstOrDefault(cc => cc.CustomerID =="c#");
cst.Country = "CN";
cst.City = "CD";
edm.SaveChanges();
tran.Commit();
}
catch (Exception ex)
{
if (tran != null)
tran.Rollback();
throw ex;
}
finally
{
if (edm != null && edm.Connection.State != System.Data.ConnectionState.Closed)
edm.Connection.Close();
}
至此,初级篇基本介绍完毕。后面,打算写点,中级篇的东西。