所以我想通過控制器從資料庫中獲取所有表名的串列作為 ASP.net API 專案。我試圖通過沒有物體的原始 sql 查詢來做到這一點,它看起來像這樣。
public async Task<ActionResult<IList>> GetAllTableNames()
{
using (var context = new DbContext())
{
List<string> results = context.Database.SqlQuery<string>("SELECT name FROM sys.tables").ToListAsync();
}
}
但是當我嘗試使用 SqlQuery 方法時,我收到錯誤“'DatabaseFacade' 不包含 'SqlQuery' 的定義并且沒有可訪問的擴展方法 'SqlQuery'”。有人知道如何解決這個問題嗎?
uj5u.com熱心網友回復:
首先在你的控制器中創建一個 Helper 方法,如下所示
使用 System.Data.SqlClient;
public async IAsyncEnumerable<string> GetTableNamesAsync()
{
using var connection = new SqlConnection(_dbContext.Database.GetConnectionString());
var command = new SqlCommand("SELECT name FROM sys.tables",connection);
await connection.OpenAsync();
var reader = await command.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
yield return reader.GetString(0);
}
}
然后呼叫你的行動 像這樣
public async Task<IActionResult> Index()
{
var list=new List<string>();
await foreach (var item in GetTableNamesAsync())
{
list.Add(item);
}
return Ok(list);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/441674.html
標籤:sql 网 实体框架 asp.net-web-api 原始SQL
上一篇:按具有布爾屬性的物件屬性過濾
