在使用 Entity Framework Core 時最麻煩的就是定義資料庫對應的實體(Entity),而且需要每個資料表都要建立才能夠取得查詢結果,就算只是取得一格資料也是一樣。
不過從 EF Core 7.0 開始對於簡單資料(純量)不需要定義對應的實體,只要使用 SqlQuery 並指定回傳的資料型態就可以查詢。例如取得最簡單的字串清單:
其他資料庫預設有的資料型態例如 int, DateTime 等都可以直接查詢取得回應。
如果是自訂資料類型或是資料庫非原生支援的資料型態就會出現以下例外訊息,這樣就需要手動定義實體才能查詢了:
參考資料:
Microsoft.Learn - SQL Queries
不過從 EF Core 7.0 開始對於簡單資料(純量)不需要定義對應的實體,只要使用 SqlQuery 並指定回傳的資料型態就可以查詢。例如取得最簡單的字串清單:
var result = _dbContext.Database
.SqlQuery<string>($"select id from users")
.ToList();
其他資料庫預設有的資料型態例如 int, DateTime 等都可以直接查詢取得回應。
如果是自訂資料類型或是資料庫非原生支援的資料型態就會出現以下例外訊息,這樣就需要手動定義實體才能查詢了:
The element type 'MyEntity' used in 'SqlQuery' method is not natively supported by your database provider. Either use a supported element type, or use ModelConfigurationBuilder.DefaultTypeMapping to define a mapping for your type.
參考資料:
Microsoft.Learn - SQL Queries
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com