Entity FrameWork--增删改以及事物


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:使用ObjectContextAddObject(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();

            }

事物特别注意   edm.Connection.Open();没有这一句会报错。

转载于:https://www.cnblogs.com/bktmkd/archive/2012/06/04/2665954.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值