我開始檢查 asp.net 6 / mvc / entity framework 應用程式,并且僅使用一個基本的測驗應用程式就遇到了麻煩。我的外鍵物件(不是 ID 本身)在創建腳手架控制器時使我的 ModelState.Isvalid 為 false。
為簡單起見更改了一些欄位名稱,但基本上是在模型中添加了一些額外的字串 - 想象一個具有所需部門的用戶:
[Column("deptId")]
public int DeptId { get; set; } // <== ValidationState = Valid
[ForeignKey("DeptId")]
[InverseProperty("Users")]
public virtual Dept dept { get; set; } = null!; // <== ValidationState = InValid
模型是使用 Scaffold-DbContext 創建的。
我可以做一個“ModelState.Remove(“Dept”)”,一切都過去了。
我可以在 asp.net 3.1 中準確地重新創建,并且沒有問題。未檢查虛擬 Dept 物件,但它位于 asp.net 6 中。這是現在預期的嗎?有沒有比在每次創建時為每個外鍵物件應用 ModelState.Remove 的修復或更好的方法?我是否遺漏了一些新的東西來告訴該欄位需要驗證?
uj5u.com熱心網友回復:
嘗試如下設定屬性:
public virtual Dept? dept { get; set; }
你也可以創建一個視圖模型
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/461404.html
標籤:C# asp.net-mvc asp.net 核心 实体框架核心
