zoukankan      html  css  js  c++  java
  • EF Core性能优化(一)

    跟踪查询
      返回实体类型的查询是默认会被跟踪的。 这表示可以更改这些实体实例,然后通过 SaveChanges() 持久化这些更改。
    非跟踪查询
      在只读方案中使用结果时,非跟踪查询十分有用。 可以更快速地执行非跟踪查询,因为无需设置更改跟踪信息。 如果不需要更新从数据库中检索到的实体,则应使用非跟踪查询。 可以将单个查询替换为非跟踪查询。

    具体详情可查看微软官方跟踪与非跟踪查询

    实体状态由EntityState枚举定义:Detached(未跟踪)、Unchanged(未改变)、Added(已添加)、Deleted(已删除)、Modified(已修改)

    using System.Threading.Tasks;
    using Core.Web.Models;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.EntityFrameworkCore;
    
    namespace Core.Web.Controllers
    {
        public class RegionController : Controller
        {
            private readonly DataContext _dataContext;
            public RegionController(DataContext dataContext)
            {
                _dataContext = dataContext;
            }
            //非跟踪查询
            public async Task<IActionResult> Index()
            {
                var regions = await _dataContext.Region.AsNoTracking().ToListAsync();
                return View(regions);
            }
            //非跟踪增加
            public async Task<bool> Add(Region region)
            {
                region.RegionID = 11;
                region.RegionDescription = "青岛";
                _dataContext.Entry(region).State = EntityState.Added;
                int res = await _dataContext.SaveChangesAsync();
                return res > 0;
            }
            //非跟踪修改
            public async Task<bool> Edit(Region region)
            {
                region.RegionID = 11;
                region.RegionDescription = "菏泽";
                _dataContext.Entry(region).State = EntityState.Modified;
                int res = await _dataContext.SaveChangesAsync();
                return res > 0;
            }
            //非跟踪删除
            public async Task<bool> Del(Region region)
            {
                region.RegionID = 11;
                _dataContext.Entry(region).State = EntityState.Deleted;
                int res = await _dataContext.SaveChangesAsync();
                return res > 0;
            }
        }
    }
  • 相关阅读:
    【GitHub】上传代码通用操作等(附下载单个文件夹或文件)
    【Git】之分支合并命令
    【FFmpeg】之Mac系统爬取所有M3U8视频下载方法
    i2c超时
    linux下串口调试
    cgminer分析
    i2c驱动理解
    STM32(三十七)SPI读取W25Q128flash的厂商ID、设备ID以及读写数据(硬件SPI)
    驱动静态和动态加载
    I2C基本原理及对I2C Adapter的理解
  • 原文地址:https://www.cnblogs.com/liessay/p/12936244.html
Copyright © 2011-2022 走看看