首页 > 其他分享 >主键Id自增,如何获取Id(Dapper)

主键Id自增,如何获取Id(Dapper)

时间:2024-07-03 10:31:06浏览次数:23  
标签:自增 fields timeFields 主键 field sql var Id

这里用的是Dapper,以前用EF的时候好像有用到过db.savechanges(). 但是项目中没有这个,所以用以下的方法去获取id

背景:涉及到多表入库,需要获取主表的Id,所以用到了这个(timeFields  可以忽略)

 

 

  /// <summary>
        /// 单个添加
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="timeFields"></param>
        public int AddBackId<T>(T t, List<string> timeFields = null)
        {
            var sql = GetSql(InsertSql, timeFields);
            if (!sql.EndsWith(";"))
            {
                sql += ";";
            }
            if (!sql.EndsWith("SELECT LAST_INSERT_ID();"))
            {
                sql += "SELECT LAST_INSERT_ID();";
            }
            return DB.Query<int>(sql, t).FirstOrDefault();
        }

  private string GetSql(string oSql, IEnumerable<string> timeFields = null)
        {
            var fields = new List<string>();
            fields.AddRange(TimeFields);
            if (timeFields != null && timeFields.Any())
            {
                fields.AddRange(timeFields.Where(x => !TimeFields.Contains(x)));
            }

            var sql = oSql;
            if (fields.Any())
            {
                foreach (var field in fields)
                {
                    sql = sql.Replace($"@{field}", $"IF(@{field} = '0001-01-01 00:00:00', NULL, @{field})");
                }
            }
            return sql;
        }

 

 

 

标签:自增,fields,timeFields,主键,field,sql,var,Id
From: https://www.cnblogs.com/cyqdeshenluo/p/18281057

相关文章

  • 基于单片机的PID炉温度控制系统设计
    **单片机设计介绍,基于单片机的PID炉温度控制系统设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机的PID炉温度控制系统设计概要可以归纳如下:一、系统概述目标:设计并实现一个基于单片机的PID炉温度控......
  • AI绘画入门实践|Midjourney:画面权重控制
    在Midjourney中,使用两个连续的英文冒号::来进行分割与权重控制。作为分隔符使用在提示词中添加双冒号::表示让MJ将部分提示词单独考虑2dillustration,frenchfries,hotdog--v62dillustration,frenchfries,hot::dog--v6作为权重控制使用在......
  • DevExpress WPF中文教程:Grid - 如何显示摘要(设计时)?
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • grid generation
    #include<iostream>#include<vector>#include<string>#include<unordered_set>#include<unordered_map>#include<thread>#include<mutex>#include<chrono>#include<ctime>#include<iomanip>......
  • Finding the React Rockstar: A Guide to Hiring Top React Developers
    ReactJScontinuestodominatethefront-enddevelopmentscene.Itsefficientcomponent-basedstructureandflexibilitymakeitafavoriteforbuildingdynamicsingle-pageapplications(SPAs).Butwithgreatpowercomesgreatresponsibility...tofindthep......
  • Android经典面试题之Glide的缓存大揭秘
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点Glide缓存关联类:Engine、LruResourceCache、LruCache、ActiveResourcesActiveResources:弱引用缓存池@VisibleForTestingfinalMap<Key,ResourceWeakReferenc......
  • 完全图解RAID存储技术:RAID 0、1、5、6、10、50、60
    转自:https://cloud.tencent.com/developer/article/2304179什么是RAID存储?独立磁盘冗余阵列(RAID)是一种存储技术,通过将两个或多个硬盘驱动器(HDD)或固态硬盘(SSD)合并成一个协调的存储单元或阵列,从而创建数据丢失的故障安全机制。RAID存储通过将数据重复或重新创建,并将其存储在......
  • android 代码如何增加atrace跟踪
    在Android代码中增加Atrace跟踪,可以使用Android提供的android.os.Trace类。这允许你在应用代码中手动添加自定义的跟踪点,以捕获特定代码段的执行情况。以下是如何在Android代码中增加Atrace跟踪的步骤:导入android.os.Trace:首先,在你的Java或Kotlin文件中导入......
  • 【esp32 学习笔记】将lvgl融入esp-idf项目中
    lvgl科普lvgl 主要特点:Github库整体了解版本号编排原则屏幕兼容性LVGL 问题处理: lvgl与 FreeRTOS由于esp-idf本身带了FreeRTOS系统,因此需要关注一下操作系统相关的内容:voidlvgl_thread(void){while(1){uint32_ttime_till_next;......
  • 【笔记】Android Settings 应用设置菜单的界面代码介绍
    简介Settings应用中,提供多类设置菜单入口,每个菜单内又有各模块功能的实现。那么各个模块基于Settings基础的界面Fragment去实现UI,层层按不同业务进行封装继承实现子类:DashboardFragmentSettingsPreferenceFragment功能设置页中的菜单又是通过Controller去实现业务并进行UI......