日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

.NET中實現(xiàn)對象數(shù)據(jù)映射示例詳解

瀏覽:406日期:2022-06-08 16:37:18
目錄
  • 前言
    • 示例
    • Mapster 使用
  • 總結(jié)

    前言

    對象數(shù)據(jù)映射即將一個對象的數(shù)據(jù)根據(jù)特定規(guī)則批量映射到另一個對象中,減少手工操作和降低人為出錯率。如將 DTO 對象和 Entity 實體相互轉(zhuǎn)換映射。

    示例

    在我們平常表單提交中,我們通常會定義一個DTO讓用戶填寫一些必須的信息而并不是將數(shù)據(jù)庫所有的字段羅列讓用戶填寫,在過去我們需要如何操作:

    // 數(shù)據(jù)庫User表public class User {    public int UserId { get; set; } // 用戶編號    public string UserName { get; set; } // 用戶名稱    public int Age { get; set; } // 年齡    public DateTime? CreateAt { get; set; } // 創(chuàng)建時間    public int CreateBy { get; set; } // 創(chuàng)建人    public DateTime Birthday { get; set; } // 生日}

    如上數(shù)據(jù)庫表設計,我們用戶編號、創(chuàng)建時間、創(chuàng)建人、包括年齡都是系統(tǒng)計算或者系統(tǒng)生成的,可能提供給用戶填寫的數(shù)據(jù)只有名稱和生日:

    public class UserRequestDto {    public string UserName { get; set; }    public DateTime Birthday { get; set; }}

    在以前我們應該這樣處理

    public async Task Create(UserRequestDto request) {    // 實例化一個User實體,并且將用戶填寫內(nèi)容一個一個賦值    User user = new User();    user.UserName = request.UserName;    user.Birthday = request.Birthday;    user.CreateAt = DateTime.Now;    ....    // 創(chuàng)建用戶    await context.User.InsertAsync(user);}

    問題: 如果很多地方需要這樣的賦值操作,那么將有非常多的代碼冗余,而且如果字段過多非常容易出錯,操作效率極低。

    有了如上問題,我們實現(xiàn)自動映射的需求就出現(xiàn)了,在C#中有比較優(yōu)秀的對象映射工具 MapsterAutoMapper,據(jù)說 Mapster 使用簡單且性能高。

    Mapster 使用

    Mapster 是一個使用簡單,功能強大,性能極佳的對象映射框架。與 AutoMapper 相比在速度和內(nèi)存占用方面表現(xiàn)更加優(yōu)秀,可以在只使用1/3內(nèi)存的情況下獲得4倍的性能提升。

    MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

    如上為官方提供的性能測試表格,當然還是根據(jù)個人喜好選擇,具體測試結(jié)果也僅供參考,大家也可以自行研究選擇。

    • 映射到一個新的對象
    // 一行代碼搞定,就是這么神奇User user =  request.Adapt<User>();

    • 在EFCore中使用 (Mapster 提供了對 IQueryable 的映射擴展)

    在EFCore中查詢所需要的格式我們通常使用Select實現(xiàn)

    context.User.Select(x => new UserDto {    UserName = x.UserName,    Age = x.Age    ...    ...})

    使用 ProjectToType 映射到目標類型

    var result = context.User.ProjectToType&lt;UserDto&gt;().ToList();
    • 自定義映射

    在某些特殊情況下當我們源屬性類型和目標屬性名稱不對應的時候我們可以進行自定義映射關系

    // 在數(shù)據(jù)映射時,將出生日期通過計算方法映射給返回的AgeTypeAdapterConfig<User, UserDto>    .NewConfig()    .Ignore("Id")//指定忽略某些字段    .Map(dest => dest.Age, src => CalcAge(src.Birthday));
    • 在某些情況下,如果需要在 依賴注入(DI)使用,Mapster提供了IMapperandMapper
    public void ConfigureServices(IServiceCollection services){    var config = new TypeAdapterConfig();    services.AddSingleton(config);//使用單例注冊    services.AddScoped<IMapper, ServiceMapper>();//注冊服務}// Service進行依賴注入private readonly IMapper _mapper;public UserService(IMapper mapper) {    _mapper = mapper;}public void Create(UserRequestDto request) {    // 使用服務    var user = _mapper.Map<User>(request);}
    • 數(shù)據(jù)類型轉(zhuǎn)化
    decimal i = 123.Adapt<decimal>();// int轉(zhuǎn)換成decimalvar e = "Read, Write, Delete".Adapt<Enum>(); // 枚舉

    總結(jié)

    使用 Mapster 能讓我們在處理尤其是 Entity 與 DTO 之間數(shù)據(jù)相互映射,如果手動映射會導致效率差,代碼冗余, Mapster的優(yōu)勢還是非常明顯的,當然也不是說 AutoMapper 就非常拉跨,大家根據(jù)自己的需求選擇即可。

    以上就是.NET中實現(xiàn)對象數(shù)據(jù)映射示例詳解的詳細內(nèi)容,更多關于.NET對象數(shù)據(jù)映射的資料請關注其它相關文章!

    標簽: ASP.NET
    日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
    老牛影视精品| 国产精品18| 激情综合五月| 美女尤物国产一区| 国产精成人品2018| 久久超碰99| 高清一区二区三区av| 国产91欧美| 99久久九九| 欧美日韩激情| 欧美午夜不卡| 99国产精品视频免费观看一公开| 国产农村妇女精品一二区| 中文字幕av一区二区三区四区| 国产美女精品| 欧美专区18| 欧美三级第一页| 成人污污视频| 日韩视频久久| 欧美在线首页| 99久久精品网| 日韩在线成人| 黑森林国产精品av| 首页欧美精品中文字幕| 欧美日韩一区二区高清| 亚洲深夜视频| 亚洲一区二区三区在线免费| 国产精品tv| 鲁大师影院一区二区三区| 国产极品久久久久久久久波多结野| 免费在线观看一区| 最新日韩av| 福利精品在线| 日本亚洲视频| 欧美日韩国产在线观看网站 | 青青伊人久久| 国产成人精品亚洲日本在线观看| 午夜影院欧美| 精品国产三区在线| 在线精品亚洲| 欧美国产91| 国产精品22p| 婷婷综合一区| 91精品福利| 国产精品国产一区| 日本a级不卡| 国产偷自视频区视频一区二区| 国产一区二区三区网| 欧美日韩视频免费看| 亚洲自啪免费| 99久久夜色精品国产亚洲狼| 久久精品毛片| 国产亚洲欧美日韩在线观看一区二区| 亚洲一区免费| 亚洲电影在线| 久久视频国产| 日韩av二区| 高清日韩中文字幕| 91亚洲成人| 激情中国色综合| 国产精品视区| 99国产成+人+综合+亚洲欧美| 99精品国产一区二区三区| 成人台湾亚洲精品一区二区| 久久天堂影院| 国产一区二区精品久| 视频在线不卡免费观看| 精品一区91| 国产白浆在线免费观看| 久久男人天堂| 亚洲欧洲一区二区天堂久久| 高清av不卡| 91精品国产乱码久久久久久久| 日韩精品一区二区三区免费观看| 蜜桃成人精品| 最新国产拍偷乱拍精品| 中文字幕一区二区av| 日本天堂一区| 国产精品成人a在线观看| 日韩一区电影| 亚洲欧美不卡| 国产欧美日韩一级| 中文字幕在线视频久| 国产一区日韩欧美| 男女性色大片免费观看一区二区 | 蜜桃视频一区二区| 国产精品网在线观看| 日韩欧美另类一区二区| 免费久久99精品国产自在现线| 欧美日韩一区二区国产| 日韩高清中文字幕一区二区| 99热精品在线| 久久午夜影院| 只有精品亚洲| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产欧美自拍| 午夜国产一区二区| 国产欧美激情| 在线视频日韩| 老司机精品视频在线播放| 国产农村妇女精品一区二区| 99成人在线| 免费久久久久久久久| 久久精品一本| 99视频在线精品国自产拍免费观看| 国产欧美日韩在线观看视频| 国产午夜精品一区二区三区欧美| 麻豆国产精品视频| 夜夜精品视频| 美女网站一区| 亚洲激精日韩激精欧美精品| 婷婷激情久久| 水蜜桃久久夜色精品一区| 999精品一区| 九九九精品视频| 电影91久久久| 日韩有码av| 69精品国产久热在线观看| 亚洲影院天堂中文av色| 国产一级一区二区| 亚洲深深色噜噜狠狠爱网站| 一区在线免费| 亚洲精品影院在线观看| 日韩精品一区二区三区中文| 亚洲二区免费| 免费欧美日韩| 国产亚洲精品美女久久 | 亚洲一区二区成人| 性色一区二区| 人人爱人人干婷婷丁香亚洲| 精品五月天堂| 91精品国产91久久久久久黑人| 丝袜美腿一区二区三区| 久久精品999| 亚洲高清不卡| 九九九精品视频| 久久国产视频网| 欧美日韩a区| 国产精品99久久久久久董美香| 欧美日韩亚洲一区三区| 国产精品久久久久久久久久齐齐| 欧美日韩亚洲一区| 日韩精品a在线观看91| 天堂久久av| 久久激五月天综合精品| 精品三级久久久| 日韩精品中文字幕第1页| 日韩精品影视| 蜜臀国产一区二区三区在线播放 | 羞羞答答国产精品www一本| 视频一区二区中文字幕| 日韩手机在线| 麻豆精品视频在线| 欧美激情另类| 黄色日韩精品| 国产精品极品国产中出| 久久久91麻豆精品国产一区| 99成人在线视频| 日本亚洲欧洲无免费码在线| 精品国产午夜| 首页国产欧美日韩丝袜| 欧美日韩18| 91精品国产91久久久久久黑人| 石原莉奈在线亚洲三区| 久久久国产精品入口麻豆 | 美女精品网站| 久久字幕精品一区| 99视频+国产日韩欧美| 国产欧美日韩一区二区三区四区| 国产一区福利| 国产九九精品| 日韩综合一区二区| 福利一区二区三区视频在线观看| 欧美日韩国产一区精品一区| 国产精品美女久久久久久不卡| 日韩精品水蜜桃| 国产免费av国片精品草莓男男| 激情婷婷综合| 国产精品亚洲人成在99www| 怡红院精品视频在线观看极品| 欧美激情综合| 巨乳诱惑日韩免费av| 亚洲精品在线影院| 国产精品欧美一区二区三区不卡| 性欧美xxxx免费岛国不卡电影| 国产精品一区二区三区四区在线观看| 日韩欧美午夜| 久久精品免视看国产成人| 亚洲一二三区视频| 日韩精品看片| 国产黄大片在线观看| 久久精品伊人| 国产精品国码视频| 日韩高清成人在线| 综合亚洲自拍| 日本在线不卡视频一二三区| 男女性色大片免费观看一区二区| 午夜久久影院| 丝袜美腿高跟呻吟高潮一区| 国产亚洲综合精品|