簡體   English   中英

使用 EntityFrameworkCore 搭建腳手架后,如何從數據庫中獲取行數

[英]How do i get the row Count from my Database after i've scaffolded it with EntityFrameworkCore

我正在嘗試學習如何使用 entityframeworkCore 進行學術項目,但我一直堅持按原樣操作我的腳手架數據庫(在 c# 中)。

例如,我正在制作一個簡單的 REST api ,它將重新計算我的數據庫(Sql-Server)中的人數。

  [HttpGet("(Id)")]
    public String GetAdminList(int Id)
    {

        return "get me "+Id+" admins !";
    }
public class IndexModel : PageModel
{
    private readonly RAZORING.Models.DBContextClass _context;

    public IndexModel(RAZORING.Models.DBContextClass context)
    {
        _context = context;
    }

    public IList<AdmUser> AdmUser { get;set; }

    public async Task OnGetAsync()
    {
        AdmUser = await _context.AdmUsers
            .Include(a => a.AdmUserAdmRoleFk1Navigation)
            .Include(a => a.AdmUserCfgTierFk1Navigation).ToListAsync();
    }
}

這是列出相關表格的 razor 頁面的 indexModel

Scaffolded 數據庫位於同一解決方案中的另一個項目中,我已經引用了它,但我什至不知道從哪里開始能夠操作表格,我制作了一個 razor mvs webApp 以確認它可以工作,但僅此而已.

即使有文檔,任何幫助都將不勝感激,因為我在網上找不到太多信息

數據庫中 AdmUser 的數量由下式給出:

_context.AdmUsers.Count();

EF 將獲取此 LINQ 並將其轉換為SELECT COUNT(*) FROM AdmUsers

您本身不會“操縱表格”; 您將事物視為實體的 collections,讓 EF 擔心“操作表”(創建 SQL 來操作表中的數據)。 這“操縱一個表[實體]”例如:

var u = _context.admUsers.Find(1234); //retrieve user 1234
u.FirstName = "Hello"; //change name
_context.SaveChanges(); //write new name to db. note, if you're in a position to be using async, then `await _context.SaveChangesAsync()` may be better

這是因為當您下載用戶 1234 時,EF 會跟蹤它。 如果您更改其屬性,EF 將看到更改並可以保存它們

您可以使用 LINQ 執行的許多操作將轉換為查詢。 獲取一個城市的所有用戶:

var usrs = _context.Users.Where(u => u.City == "Chicago").ToArray();

//probably becomes SELECT * FROM Users WHERE City = 'Chicago'

將所有人搬到紐約:

foreach(var u in usrs)
  u.City = "New York";
_context.SaveChanges();

有時 EF 不能翻譯你使用的表達式,所以你會得到一個錯誤:

var twentyYrOlds = _context.Users.Where(u => u.Age.ToString("00").Substring(0, 1) == "2").ToArray();

在這里,很可能(我永遠不會說永遠不會)EF 無法將 ToString 與格式以及隨后的 substring 轉換為 SQL 等效項。 您需要以可以翻譯的不同方式編寫查詢:

var twentyYrOlds = _context.Users.Where(u => u.Age >= 20 && u.Age < 30).ToArray();

暫無
暫無

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

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