最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

dapper使用Insert或update時部分字段不映射到數(shù)據(jù)庫

 更新時間:2023年12月14日 10:07:24   作者:香煎三文魚  
我們在使用dapper的insert或update方法時可能會遇見一些實(shí)體中存在的字段但是,數(shù)據(jù)庫中不存在的字段,這樣在使用insert時就是拋出異常提示字段不存在,這個時候該怎么解決呢,下面給大家分享示例實(shí)體代碼,感興趣的朋友一起看看吧

我們在使用dapper的insert或update方法時可能會遇見一些實(shí)體中存在的字段但是,數(shù)據(jù)庫中不存在的字段,這樣在使用insert時就是拋出異常提示字段不存在,這個時候該怎么解決呢,下面一起看一下:

示例實(shí)體

這里我們假如 test字段在數(shù)據(jù)庫中不存在

[Table("DemoTable")]
public class DemoTable:BaseEntity,ISoftDelete
{
    public bool isDelete { get; set; }
    [Key]
    [Comment("主鍵")]
    public int id { get; set; }
    [Comment("姓名")]
    [MaxLength(20)]
    public string name { get; set; }
    [Comment("身份證號")]
    [MaxLength(18)]
    public string idCard { get; set; }
    public string test { get; set; } 
}

1.自己根據(jù)實(shí)體生成sql(相對復(fù)雜)

這里我們可以通過反射獲取實(shí)體的屬性,去判斷忽略不需要的字段

private string GetTableName() => typeof(T).Name;
public async Task<int> CreateAsync(T entity)
{
    try
    {
        using IDbConnection db = GetOpenConn();
        var type = entity.GetType();
        //在這里我們略過了 id 和test 字段,這樣在生成sql時就不會包含
        var properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public)
                            .Where(prop => !string.IsNullOrWhiteSpace(prop.GetValue(entity))&& prop.Name != "id" && prop.Name != "test ");
        var columns = string.Join(", ", properties.Select(prop => prop.Name));
        var values = string.Join(", ", properties.Select(prop => $"@{prop.Name}"));
        var query = $"INSERT INTO {GetTableName()} ({columns}) VALUES ({values})";
        return Convert.ToInt32(await db.QueryAsync(query, entity));
    }
    catch (Exception e)
    {
        throw new Exception(e.Message);
    }
}

2.使用特性跳過屬性

使用特性的方式就非常簡單粗暴啦,引用using Dapper.Contrib.Extensions;

在不需要的映射的屬性上添加[Write(false)]

using Dapper.Contrib.Extensions;
	[Write(false)]
	public int id { get; set; }
	[Write(false)]
    public string test { get; set; } 
using Dapper.Contrib.Extensions;
	[Write(false)]
	public int id { get; set; }
	[Write(false)]
    public string test { get; set; } 

然后直接調(diào)用Insert方法即可

public async Task<int> CreateAsync(T entity)
{
    try
    {
        using IDbConnection db = GetOpenConn();
		return db.Insert<T>(entity);
    }
    catch (Exception e)
    {
        throw new Exception(e.Message);
    }
}

到此這篇關(guān)于dapper使用Insert或update時部分字段不映射到數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)dapper字段不映射到數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Navicat?premium?for?mac?12的安裝破解圖文教程

    Navicat?premium?for?mac?12的安裝破解圖文教程

    Navicat Premium是一款數(shù)據(jù)庫管理工具,將此工具連接數(shù)據(jù)庫,你可以從中看到各種數(shù)據(jù)庫的詳細(xì)信息,這篇文章主要介紹了Mac下Navicat?premium?for?mac?12的安裝破解過程,需要的朋友可以參考下
    2024-01-01
  • sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法

    sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法

    這篇文章主要介紹了sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法,需要的朋友可以參考下
    2014-06-06
  • 記一次SQL優(yōu)化的實(shí)戰(zhàn)記錄

    記一次SQL優(yōu)化的實(shí)戰(zhàn)記錄

    作為開發(fā)人員,我們免不了與sql打交道,有些sql可能在業(yè)務(wù)的最開始,執(zhí)行是毫無問題的,但是隨著業(yè)務(wù)量的提升以及業(yè)務(wù)復(fù)雜度的加 深,可能之前的sql就會需要優(yōu)化了,下面這篇文章主要給大家介紹了關(guān)于一次SQL優(yōu)化的實(shí)戰(zhàn)記錄,需要的朋友可以參考下
    2022-07-07
  • SQL Server數(shù)據(jù)庫性能優(yōu)化技術(shù)

    SQL Server數(shù)據(jù)庫性能優(yōu)化技術(shù)

    SQL Server數(shù)據(jù)庫性能優(yōu)化技術(shù)...
    2007-06-06
  • SQL關(guān)系模型的知識梳理總結(jié)

    SQL關(guān)系模型的知識梳理總結(jié)

    這篇文章主要為大家介紹了SQL關(guān)系模型,文中對SQL關(guān)系模型的知識作了詳細(xì)的梳理總結(jié),有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • Navicat添加外鍵詳細(xì)操作步驟

    Navicat添加外鍵詳細(xì)操作步驟

    這篇文章主要介紹了Navicat添加外鍵詳細(xì)操作步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SQL服務(wù)器面臨的危險(xiǎn)和補(bǔ)救.讀[十種方法]后感.

    SQL服務(wù)器面臨的危險(xiǎn)和補(bǔ)救.讀[十種方法]后感.

    SQL服務(wù)器面臨的危險(xiǎn). 危險(xiǎn):沒有防火墻保護(hù),暴露在公網(wǎng)中. 后果:SQL蠕蟲感染和黑客進(jìn)行拒絕服務(wù)攻擊、緩存溢出、SQL盲注和其它攻擊. 補(bǔ)救:安裝一款防火墻,即使經(jīng)費(fèi)有限,網(wǎng)上也有大把的免費(fèi)產(chǎn)品.
    2008-05-05
  • SQLMesh 模型管理指南從創(chuàng)建到驗(yàn)證的實(shí)踐記錄

    SQLMesh 模型管理指南從創(chuàng)建到驗(yàn)證的實(shí)踐記錄

    本文全面介紹SQLMesh這一現(xiàn)代化數(shù)據(jù)轉(zhuǎn)換工具的核心功能,重點(diǎn)講解模型創(chuàng)建、編輯、驗(yàn)證和刪除的全生命周期管理方法,通過具體示例和最佳實(shí)踐,幫助數(shù)據(jù)工程師掌握SQLMesh的高效工作流程,感興趣的朋友一起看看吧
    2025-05-05
  • Navicat?Premium?12數(shù)據(jù)庫管理解決方案

    Navicat?Premium?12數(shù)據(jù)庫管理解決方案

    Navicat?Premium?12是一款跨平臺數(shù)據(jù)庫管理工具,支持MySQL、Oracle等多數(shù)據(jù)庫系統(tǒng),提供數(shù)據(jù)可視化、SQL調(diào)試、版本控制、性能監(jiān)控及安全保護(hù)等功能,顯著提升數(shù)據(jù)庫管理效率與團(tuán)隊(duì)協(xié)作能力,下面為大家介紹Navicat?Premium?12數(shù)據(jù)庫管理解決方案,感興趣的朋友一起看看吧
    2025-08-08
  • Mybatis分頁插件的實(shí)例詳解

    Mybatis分頁插件的實(shí)例詳解

    這篇文章主要介紹了Mybatis分頁插件的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評論

北宁市| 呼图壁县| 永登县| 泾源县| 云安县| 通道| 大英县| 马边| 长治县| 龙泉市| 石渠县| 山阴县| 七台河市| 盐边县| 鄂尔多斯市| 宝丰县| 正宁县| 行唐县| 博客| 宜川县| 平昌县| 改则县| 都匀市| 自治县| 西充县| 来宾市| 富宁县| 郁南县| 吉木萨尔县| 民乐县| 随州市| 乌拉特中旗| 昌图县| 获嘉县| 汉沽区| 连州市| 满洲里市| 都江堰市| 滁州市| 龙陵县| 嘉义市|