EF CORE 增删改查+事务

16 篇文章 2 订阅
6 篇文章 0 订阅

微软官方文档 描述
新增数据
在这里插入图片描述
使用 DbSet.Add 方法添加实体类的新实例,就是往DbSet.Add(添加被new 的新实例,数据绑定在新实例里 )
如果是多条循环添加

for (int i = 0; i < addlist.Count; i++)
{
    //添加 Value
    SySGlobalMultipleLanguageValue entityGlobalMultipleLanguageValue = new SySGlobalMultipleLanguageValue();
    entityGlobalMultipleLanguageValue.LookupType = "SY_S_DEPARTMENT.DEPT_CODE";
    entityGlobalMultipleLanguageValue.LookupValue = addlist[i].GetType().GetProperty("Dept_Code").GetValue(addlist[i]).ToString();
    entityGlobalMultipleLanguageValue.Meaning = addlist[i].GetType().GetProperty("Name").GetValue(addlist[i]).ToString();
    entityGlobalMultipleLanguageValue.Language = "zh-cn";
    entityGlobalMultipleLanguageValue.Creator = userid;
    entityGlobalMultipleLanguageValue.CreateDate = DateTime.Now;
    Entry(SySGlobalMultipleLanguageValues).State = EntityState.Modified;
    expectCount++;
    SySGlobalMultipleLanguageValues.Add(entityGlobalMultipleLanguageValue);
}

删除
在这里插入图片描述

  int expectCount = 0;  //记录游标
  bool blResult = false;
  /*
  //单个 删除
  var blog = SySDepartments.Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ") && x.DeptCode.Equals(Deltcode)).First();
  Remove(blog);
  */
  //批量删除  可以用where 扩大范围 ;ToArrayAsync方法选择
  var departments= Contexts.SySDepartments.Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ") && x.DeptCode.Equals(Deltcode)).ToArrayAsync();
  SySDepartments.RemoveRange(departments.Result);
  expectCount += departments.Result.Length;  --Result.Length返回行数

更新修改
在这里插入图片描述
把查询的结果实例化 ,修改实例化的数据,再把实例化更新后的数据保存

 int expectCount = 0;   //记录游标
 bool blResult = false; //默认状态
 //查选数据 First() 存入实体类
 var departments = Contexts.SySDepartments.Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ") && x.DeptCode.Equals(CurrentCode[0].ToString())).First();
 
//更改 刚查询的实体类
 departments.UpperDept = ChangetCode[0].ToString();               //修改值
 departments.LineId = Convert.ToInt32(ChangetCode[1].ToString()); //修改值
 departments.Modifier = userid;									  //修改值
 departments.ModifyDate = DateTime.Now;							  //修改值
 expectCount++;
 Entry(departments).State = EntityState.Modified;				  //实体状态 更新

//把更改后的实体类保存
 SaveChanges();

查询数据
微软官方文档 描述
在这里插入图片描述在这里插入图片描述

//单个实体查询
var list =  Contexts.SySDepartments
			.Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ") && x.DeptCode.Equals(CurrentCode[0].ToString()))
			.ToLiSt();
			
//多表连接查询	
var querylist = (from Department in Set<SySDepartment>().Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ"))  
            join Value in Contexts.Set<SySGlobalMultipleLanguageValue>().Where(i => i.LookupValue.Equals(Deltcode))
on Department.UpperDept equals Value.LookupValue
            select new { 
                Value.Meaning, 
                Department.UpperDept,
                Department.DeptCode
            }).ToList();
		

事务对执行 新增、删除、修改 的指令
好处: 比如当 新增、删除、修改 ,有5条数据 ,也就就是说有5个受影响的行,但是实际执行没有5个受影响的行,尽管没报错执行成功但是数据不准确,有缺少,就代表执行是有误的;事务可以Rollback 回滚执行前的数据,预处理机制,防止数据混乱;

新增、删除、修改 ,有5条数据 ,事务 SaveChanges() 保存 ,返回3条数据 影响数,
返回3条数据 影响数 不等于 游标记录数 那么就 Rollback()回滚 否则 Commit()提交

public bool UpdatenameRepository(string DeptCode,string txtName,string userid)
{
    int expectCount = 0;  //游标
    bool blResult = false;

    var globalmultiplelanguagevalues = Contexts.SySGlobalMultipleLanguageValues.Where(i => i.LookupValue.Equals(DeptCode)).First();

    globalmultiplelanguagevalues.Meaning = txtName;
    globalmultiplelanguagevalues.Modifier = userid;
    globalmultiplelanguagevalues.ModifyDate = DateTime.Now;
    globalmultiplelanguagevalues.Language = "zh-cn";
    expectCount++;
    Entry(globalmultiplelanguagevalues).State = EntityState.Modified;

    using (var transaction = Database.BeginTransaction())
    {
        try
        {
            int count = SaveChanges();
            blResult = count == expectCount;
            if (blResult)
                transaction.Commit();
            else
                transaction.Rollback();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            var ms = ex;
        }
    }
    return blResult;
}

demo

public bool DeltDepartmentRepository(string Deltcode)
{
    int expectCount = 0;  //记录游标
    bool blResult = false;
    /*
    //单个 删除
    var blog = SySDepartments.Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ") && x.DeptCode.Equals(Deltcode)).First();
    Remove(blog);
    */
    //批量删除
    var departments= Contexts.SySDepartments.Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ") && x.DeptCode.Equals(Deltcode)).ToArrayAsync();
    SySDepartments.RemoveRange(departments.Result);
    expectCount += departments.Result.Length;

    var globalmultiplelanguagevalues = Contexts.SySGlobalMultipleLanguageValues.Where(i => i.LookupValue.Equals(Deltcode)).ToArrayAsync();
    SySGlobalMultipleLanguageValues.RemoveRange(globalmultiplelanguagevalues.Result);
    expectCount += globalmultiplelanguagevalues.Result.Length;

    /*if (departmententity.Count >= 0 && globalentity.Count >= 0)
        iROCKExceptionManager.HandleException(iROCKExceptionPolicy.CreatingAndThrown, Error.OperationGroupNOCanNotNullOrEmpty);
    */
    //事务
    using (var transaction =  Database.BeginTransaction())
    {
        try
        {
            int count = SaveChanges();
            blResult = count == expectCount;
            if (blResult)
                transaction.Commit();
            else
                transaction.Rollback();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            var ms = ex;
        }
    }
    return blResult;
}

public bool AddDepartmentRepository(List<object> addlist, string userid)
{
    bool blResult = false;
    var expectCount = 0;
    for (int i = 0; i < addlist.Count; i++)
    {
        //添加 Department
        SySDepartment entityDepartment = new SySDepartment();
        entityDepartment.Facility = "APAT";
        entityDepartment.Site = "SZ";
        entityDepartment.DeptCode = addlist[i].GetType().GetProperty("Dept_Code").GetValue(addlist[i]).ToString();
        if (!addlist[i].GetType().GetProperty("Upper_Dept").GetValue(addlist[i]).ToString().Equals(addlist[i].GetType().GetProperty("Dept_Code").GetValue(addlist[i]).ToString()) && addlist[i].GetType().GetProperty("Upper_Dept").GetValue(addlist[i]).ToString() != string.Empty)
        {
            entityDepartment.UpperDept = addlist[i].GetType().GetProperty("Upper_Dept").GetValue(addlist[i]).ToString();
        }
        entityDepartment.LineId = Convert.ToInt32(addlist[i].GetType().GetProperty("Line_ID").GetValue(addlist[i]));
        entityDepartment.Creator = userid;
        entityDepartment.CreateDate = DateTime.Now;
        expectCount++;
        Entry(SySDepartments).State = EntityState.Modified;
        SySDepartments.Add(entityDepartment);

        //添加 Value
        SySGlobalMultipleLanguageValue entityGlobalMultipleLanguageValue = new SySGlobalMultipleLanguageValue();
        entityGlobalMultipleLanguageValue.LookupType = "SY_S_DEPARTMENT.DEPT_CODE";
        entityGlobalMultipleLanguageValue.LookupValue = addlist[i].GetType().GetProperty("Dept_Code").GetValue(addlist[i]).ToString();
        entityGlobalMultipleLanguageValue.Meaning = addlist[i].GetType().GetProperty("Name").GetValue(addlist[i]).ToString();
        entityGlobalMultipleLanguageValue.Language = "zh-cn";
        entityGlobalMultipleLanguageValue.Creator = userid;
        entityGlobalMultipleLanguageValue.CreateDate = DateTime.Now;
        Entry(SySGlobalMultipleLanguageValues).State = EntityState.Modified;
        expectCount++;
        SySGlobalMultipleLanguageValues.Add(entityGlobalMultipleLanguageValue);
    }

    using (var transaction = Database.BeginTransaction())
    {
        try
        {
            int count = SaveChanges();
            blResult = count == expectCount;
            if (blResult)
                transaction.Commit();
            else
                transaction.Rollback();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            var ms = ex;
        }
    }
    return blResult;
}

public bool UpdateDepartmenRepository(List<object> CurrentCode, List<object> ChangetCode, string userid)
{
    int expectCount = 0;
    bool blResult = false;

    var departments = Contexts.SySDepartments.Where(x => x.Facility.Equals("APAT") && x.Site.Equals("SZ") && x.DeptCode.Equals(CurrentCode[0].ToString())).First();
    var globalmultiplelanguagevalues = Contexts.SySGlobalMultipleLanguageValues.Where(i => i.LookupValue.Equals(CurrentCode[0].ToString())).First();

    //修改到新的节点
    //update_department.DeptCode = current_department.DeptCode;
    if (!ChangetCode[0].ToString().Equals("DO") && !ChangetCode[0].ToString().Equals(departments.DeptCode))
    {
        departments.UpperDept = ChangetCode[0].ToString();
        departments.LineId = Convert.ToInt32(ChangetCode[1].ToString());
        departments.Modifier = userid;
        departments.ModifyDate = DateTime.Now;
        expectCount++;
        Entry(departments).State = EntityState.Modified;
       

        globalmultiplelanguagevalues.Modifier = userid;
        globalmultiplelanguagevalues.ModifyDate = DateTime.Now;
        expectCount++;
        Entry(globalmultiplelanguagevalues).State = EntityState.Modified;
        
    }
    using (var transaction = Database.BeginTransaction())
    {
        try
        {
            int count = SaveChanges();
            blResult = count == expectCount;
            if (blResult)
                transaction.Commit();
            else
                transaction.Rollback();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            var ms = ex;
        }
    }
    return blResult;
}

public bool UpdatenameRepository(string DeptCode,string txtName,string userid)
{
    int expectCount = 0;
    bool blResult = false;

    var globalmultiplelanguagevalues = Contexts.SySGlobalMultipleLanguageValues.Where(i => i.LookupValue.Equals(DeptCode)).First();

    globalmultiplelanguagevalues.Meaning = txtName;
    globalmultiplelanguagevalues.Modifier = userid;
    globalmultiplelanguagevalues.ModifyDate = DateTime.Now;
    globalmultiplelanguagevalues.Language = "zh-cn";
    expectCount++;
    Entry(globalmultiplelanguagevalues).State = EntityState.Modified;

    using (var transaction = Database.BeginTransaction())
    {
        try
        {
            int count = SaveChanges();
            blResult = count == expectCount;
            if (blResult)
                transaction.Commit();
            else
                transaction.Rollback();
        }
        catch (Exception ex)
        {
            transaction.Rollback();
            var ms = ex;
        }
    }
    return blResult;
}

demo下载

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ASP.NET MVC是一种基于ASP.NET的Web应用程序框架,它使用模型-视图-控制器(MVC)模式来构建Web应用程序。EF(Entity Framework)是一种ORM(对象关系映射)框架,它可以将数据库中的数据映射到.NET对象中。增删是指对数据库中的数据进行增加、删除、修询操作。在ASP.NET MVC中,可以使用EF来进行数据库操作,实现增删功能。 ### 回答2: ASP.NET MVC 和 EF 是一对强力的开发工具,可以面向对象地开发 Web 应用程序。他们使用的是基于现代软件工程原则的模型-视图控制器模式,也就是MVC。这种模式不仅分离了应用程序的三个核心方面,即用户界面、数据业务逻辑和用户数据,而且还允许多个团队在不干涉彼此的情况下同时开发应用程序。 对于ASP.NET MVC来说,它是一种Web应用程序开发框架,适用于开发具有复杂功能和交互需要的动态Web应用程序。在ASP.NET MVC中,模型-视图-控制器(MVC)模式被广泛使用,以将Web应用程序拆分为三个核心部分:控制器,模型和视图。控制器作为请求接收者,负责处理请求并将响应发送回客户端;视图则负责呈现应用程序的用户界面;而模型则负责管理和检索应用程序的状态和数据。 对于EF来说,它是一种ORM对象关系映射工具,可自动将.NET对象映射为关系数据库中的表、视图和存储过程。使用EF,我们可以通过一个简单的API访问数据库,而不需要复杂的SQL语句。EF支持各种数据库,包括Microsoft SQL Server,Oracle,MySQL和SQLite等。 对于ASP.NET MVC和EF增删,我们可以通过以下步骤来实现: 1. 建立数据库连接 在使用EF进行增删之前,我们需要建立数据库连接。在ASP.NET MVC中,我们可以在Web.config文件中配置连接字符串,指定数据库的位置和访问凭据。 2. 创建模型 我们需要创建一个类来定义模型。该类应该包含与数据库表中的列对应的属性。这些属性名称和数据类型应该与数据库中的列对应,以便我们可以将数据从一个位置传递到另一个位置。 3. 创建数据库上下文 我们需要创建一个EF数据库上下文,该上下文负责管理数据库连接和数据操作。我们可以在该上下文中创建插入、更新、删除和询方法。 4. 插入数据 我们可以通过在数据库上下文中创建一个新对象并将其添加到数据库上下文中来插入数据。保存更后,这些更将通过EF发送到数据库。 5. 更新数据 要更新数据,我们可以在数据库上下文中询现有对象,并更其属性。一旦更完成,我们可以保存更并将更提交到数据库。 6. 删除数据 要删除数据,我们可以在数据库上下文中询现有对象,并调用删除操作。一旦删除完成,我们可以保存更并将更提交到数据库。 7. 询数据 要询数据,我们可以使用数据库上下文来执行LINQ询。LINQ询可用于检索数据,并通过视图将数据呈现给用户。 综上所述,我们可以看出ASP.NET MVC和EF是一对非常强大的应用程序开发工具,可以帮助我们构建复杂的Web应用程序,并为我们提供了一种简单而直观的方法来管理数据库操作。在项目中应用它们,可以极大地提高我们的开发效率,提高生产力。 ### 回答3: ASP.NET MVC是一种基于模型-视图-控制器(Model-View-Controller, MVC)架构设计的Web应用程序框架。该框架使用MVC设计模式,将应用程序分为几个不同的组件,这些组件分别处理不同方面的应用程序逻辑。 Entity Framework(EF)是一种对象关系映射(Object-Relational Mapping, ORM)框架,用于将数据库中的表格数据映射到.NET对象中。它允许开发人员通过使用.NET语言(如C#和VB.NET)来编写应用程序,而不必直接处理SQL代码。 在ASP.NET MVC应用程序中使用EF可以简化数据访问层的开发过程,并为应用程序提供数据持久化解决方案。下面将介绍如何在ASP.NET MVC中完成增删方法: 增加数据: 应用程序需要将表格的数据添加到数据库,可以通过以下几个步骤来完成添加数据的方法: 1、在模型中定义一个实体,该实体将表示您要添加到表中的数据。 2、在控制器中创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求中发送到服务器的实体。 3、在方法中创建一个新的实体,将数据从请求参数分配给该实体的属性。 4、将新实体添加到EF上下文并保存更。 删除数据: 应用程序需要从一个表中删除数据,可以通过以下几个步骤来完成删除数据的方法: 1、在控制器中创建一个方法,该方法接受一个参数,该参数是表格中的数据的唯一标识符。 2、在方法中使用EF找需要删除的实体,并从 EF上下文中删除实体。 3、将更保存到数据库。 更新数据: 应用程序需要更新表格中的数据,可以通过以下几个步骤来完成更新数据的方法: 1、在模型中定义一个实体,该实体将表示您要更新表格中的数据。 2、在控制器中创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求中发送到服务器的实体。 3、在方法中使用EF找需要更新的实体。 4、将传入的实体的属性复制到EF找到的实体中。 5、将更保存到数据库。 询数据: 应用程序需要从一个表中检索数据,可以通过以下几个步骤来完成询数据的方法: 1、在控制器中创建一个方法,该方法将返回从数据库检索到的实体。 2、在方法中使用EF执行一个询,以从表中检索数据。 3、返回从DB检索到的实体。 综上所述,使用ASP.NET MVC和EF可以轻松地完成最常用的数据库操作,增加、删除、修询数据。此外,这些操作的执行效率也很高,可以为开发者节省大量的时间和精力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值