日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

在EF中使用SQL执行简单高效的增删查操作

發(fā)布時(shí)間:2025/6/16 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在EF中使用SQL执行简单高效的增删查操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

隨著平臺(tái)數(shù)據(jù)的積累,對(duì)于數(shù)據(jù)訪問的速度要求愈來愈高。優(yōu)化后臺(tái)訪問性能,將是之后的一個(gè)重點(diǎn)任務(wù)。

但是,后臺(tái)在項(xiàng)目開發(fā)初期采用的是Abp(Lite DDD)框架,集成EnityFramework。因?yàn)橹暗捻?xiàng)目經(jīng)驗(yàn)有用過EF,對(duì)于開發(fā)者編碼來說,著實(shí)高效。但是之前所處傳統(tǒng)行業(yè),對(duì)于數(shù)據(jù)訪問的性能要求并不高。因此也就沒有在意EF的性能問題。然后,有句話叫做“出來混,早晚要還的”。這不,現(xiàn)在的Web項(xiàng)目對(duì)于數(shù)據(jù)訪問性能有些吃力了,尤其是涉及使用Linq拼寫出的組合查詢且數(shù)據(jù)量大時(shí),查詢速度慢了下來。

最近也是在一邊完成新功能的開發(fā),一邊通過優(yōu)化語法進(jìn)而優(yōu)化查詢速度。但是,這兩天后臺(tái)倉儲(chǔ)層調(diào)用自帶Api查詢數(shù)據(jù)的奇葩表現(xiàn)令我甚是無奈。在新功能(使用websocket實(shí)時(shí)推動(dòng)數(shù)據(jù))的界面中,調(diào)用后臺(tái)一個(gè)查詢?cè)O(shè)備信息的接口,死活查不到實(shí)體數(shù)據(jù)。然后,調(diào)用同樣的接口在其他界面卻可以實(shí)現(xiàn)。不禁令我對(duì)該框架產(chǎn)生了很大的疑惑,Why?

不過現(xiàn)在的主要任務(wù)是盡快交付功能,我把問題記下了。

為了實(shí)現(xiàn)在當(dāng)前界面調(diào)用查詢?cè)O(shè)備信息的接口可以查到數(shù)據(jù),我注釋掉了Services層對(duì)Repository層的調(diào)用Abp.EnityFramework自帶的API查詢數(shù)據(jù),改用組織SQL語句執(zhí)行查詢、刪除、新增。結(jié)果則是正常的可以得到你想要的數(shù)據(jù)。不禁感慨啊,那些個(gè)ORM不是萬能的,純碎的Sql是那么的簡單高效。

下面貼出EF中使用SQL執(zhí)行查詢、刪除及新增的用法:

A,查詢,

var parameter = new SqlParameter("@DeviceId", id);var sqlDeviceInfo = string.Format(@"Select * from dbo.DeviceInfos where dbo.DeviceInfos.Id=@DeviceId");var deviceInfo = await Context.Database.SqlQuery<DeviceInfo>(sqlDeviceInfo, new SqlParameter("@DeviceId", id)).FirstOrDefaultAsync();

?

B。刪除

var deviceIdParamter = new SqlParameter("@DeviceId", deviceId);var sqlDeleteId = string.Format(@"Delete from dbo.DeviceAndHiddenTroubleLinks where DeviceId=@DeviceId");var result = await Context.Database.ExecuteSqlCommandAsync(sqlDeleteId, deviceIdParamter);

?

C、新增

var sqlAddId = string.Format(@"Insert into dbo.DeviceAndHiddenTroubleLinks(DeviceId,DeviceHiddenTrouble_Id) values (@DeviceId,@HiddenTroubleId)");foreach (var hiddenTroubleId in deviceHiddenTroubleIds){var deviceIdAndHiddenTroubleIdParamter = new DbParameter[] { new SqlParameter { ParameterName = "DeviceId", Value = deviceId }, new SqlParameter { ParameterName = "HiddenTroubleId", Value = hiddenTroubleId } };await Context.Database.ExecuteSqlCommandAsync(sqlAddId, deviceIdAndHiddenTroubleIdParamter);}

改完之后發(fā)現(xiàn),直接使用SQL挺爽的。看來后臺(tái)性能優(yōu)化又多了條路子。

?

墨匠

總結(jié)

以上是生活随笔為你收集整理的在EF中使用SQL执行简单高效的增删查操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。