本节,直接写通过代码来学习。这些基本操作都比较简单,与这些基本操作相关的内容在之前的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();
            }