zoukankan      html  css  js  c++  java
  • Entity Framework 学习初级篇7基本操作:增加、更新、删除、事务

    本节,直接写通过代码来学习。这些基本操作都比较简单

           增加:

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

                }

    至此,初级篇基本介绍完毕。后面,打算写点,中级篇的东西。

    作者:罗敏贵
    邮箱:minguiluo@163.com
    QQ群:34178394 建群 主要是寻找志同道合的人士一起学习和讨论自己的所学所思
    出处:http://luomingui.cnblogs.com/
    说明:专注于微软平台项目架构、熟悉设计模式、架构设计、敏捷个人和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
    知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

  • 相关阅读:
    Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)
    UI Recorder 自动化测试 回归原理(九)
    UI Recorder 自动化测试 录制原理(八)
    UI Recorder 自动化测试 整体架构(七)
    UI Recorder 自动化测试 配置项(六)
    UI Recorder 自动化测试 工具栏使用(五)
    UI Recorder 自动化测试 回归测试(四)
    UI Recorder 自动化测试 录制(三)
    UI Recorder 自动化测试工具安装问题疑难杂症解决(二)
    UI Recorder 自动化测试安装教程(一)
  • 原文地址:https://www.cnblogs.com/luomingui/p/2027203.html
Copyright © 2011-2022 走看看