簡體   English   中英

EF Core 與 ADO.NET

[英]EF Core vs ADO.NET

我的一個客戶正在開發一組 ASP.NET 核心 API,它必須支持每小時 15,00,000 個請求。

所有請求最終都將與 SQL 服務器表進行交互。 有些是 SQL 服務器內存中 OLTP 表。

客戶目前正在使用 ADO.Net 和存儲過程在類似的應用程序中建立 SQL 連接,並想知道他們是否繼續使用相同的或應該考慮使用 EF Core。

我自己過去主要使用 ADO.Net,所以想檢查我們是否可以在這里建議 EF Core 或堅持使用 SP 的 ADO.Net 是最安全的選擇?

我知道 ADO.NET 是最安全的選擇,如果您致力於使用存儲過程並有極端的性能要求,但 EF 在市場上仍然很重要並且被許多人使用。 如果它真的如此糟糕,它肯定會有替代品或被廢棄。

ADO.NET 是安全的賭注,還是我們可以繼續使用新技術進步,例如 EF Core 作為 ORM 並將其與 LINQ 功能一起使用,編寫更少的代碼等?

該怎么辦?

ADO.NET 是安全的賭注,還是我們可以繼續使用新技術進步,如 EF Core 作為 ORM 並將其與 LINQ 功能一起使用,編寫更少的代碼等?

我們無法根據一個統計數據 (15,000,000) 做出決定,但一種選擇是使用 ORM 逐個遷移/擴展。 您可以使用 ORM 維護現有代碼並添加新功能。 隨着經驗的積累,您可以做出更好的決定。


或者應該考慮 EF Core

我想人們應該在開始一項重要工作時始終考慮可用的當代技術,但是說所有新項目都應該寫在 [insert_some_framework_here] 中是不負責任的。

EF Core 和存儲過程

下面在 EF Core 中執行一個存儲過程。

var blogs = context.Blogs
    .FromSqlRaw("EXECUTE dbo.GetMostPopularBlogs")
    .ToList();

請注意:

  • 它可以與 Linq 查詢混合和匹配
  • 有限制

請參閱原始 SQL 查詢


Dapper 和存儲過程

你考慮過Dapper嗎? 以下直接來自其官方回購。

Dapper 完全支持存儲過程:

 var user = cnn.Query<User>("spGetUser", new {Id = 1}, commandType: CommandType.StoredProcedure).SingleOrDefault();

如果你想要更花哨的東西,你可以這樣做:

 var p = new DynamicParameters(); p.Add("@a", 11); p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output); p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue); cnn.Execute("spMagicProc", p, commandType: CommandType.StoredProcedure); int b = p.Get<int>("@b"); int c = p.Get<int>("@c");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM