簡體   English   中英

.net Core 2.2 EF:SaveChangesAsync() 將不相關的列設置為空

[英].net Core 2.2 EF: SaveChangesAsync() setting unrelated columns to null

我有一個 Asp.Net Core 2.2 應用程序。 我編寫了幾個新的 Razor 頁面來將一些新數據更新到現有模型。

問題是,當我“提交”我的表單並調用 SaveChangesAsync() 時,它會更新我已更改的字段......並且它會擦除記錄中的大多數其他字段。

模型有 40 或 50 個屬性; 我只是想更新其中的 3 或 4 個。

但是,除了“ID”,並在我的表單中的字段一切由更新設置成“空”。

問:知道我錯過了什么嗎?

public class EditPageModel : PageModel
{
    private readonly Project.Models.MyContext _context;

    [BindProperty]
    public MyModel MyRecord { get; set; }

    public EditPageModel(Project.Models.MyContext context)
    {
        _context = context;
        // <= This is OK...

    public async Task<IActionResult> OnGetAsync(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        MyRecord = await _context.MyModel.FirstOrDefaultAsync(m => m.ID == id);
        // <= This is OK, too: I call "return Page()" and everything looks fine...

    public async Task<IActionResult>OnPostAsync()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }

        // Update DB
        _context.Attach(MyRecord).State = EntityState.Modified;
        try
        {
            await _context.SaveChangesAsync();  
        }
        catch (DbUpdateConcurrencyException)
        {
            // No exceptions, no errors or warnings: Never get here...
            ...
        }
        return RedirectToPage("./Index");

您有兩個選擇:

選項 1:為模型中不需要更改的每個屬性添加隱藏字段。

選項 2:從數據庫加載記錄,將屬性從模型映射到 db 對象並保存更改,而不將綁定模型附加到上下文。

暫無
暫無

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

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