![](/img/trans.png)
[英]How do I get the id of the selected row from my database in a datagridview control?
[英]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.