簡體   English   中英

實體框架-保存數據庫更改不起作用

[英]Entity Framework - saving db changes not working

提交表單並傳遞模型(表單)時,我試圖將更改保存到數據庫中。

表單模型具有一個PeopleInvolved對象作為屬性。

該模型已成功更新,更改也已成功添加到peopleInvolved對象,但是, SaveChanges()調用不會保存任何內容。

.NET Framework 4.5.1-EF 6.1.1

public class Forms
{
        public int Id { get; set; }
        public string UserId { get; set; }
        public PeopleInvolved PeopleInvolved { get; set; }     
}

public async Task<ActionResult> EditForm(Forms model, string returnUrl)
{
    ViewData["ReturnUrl"] = returnUrl;
    ApplicationUser user = await GetCurrentUserAsync();

    if (!ModelState.IsValid) 
        return RedirectToAction("Index", model);

    if (model.PeopleInvolved != null)
    {
        PeopleInvolved peopleInvolved = _db.PeopleInvolved.Single(x => x.FormId == user.FormId);
        peopleInvolved = model.PeopleInvolved;

        _db.SaveChanges();

        return RedirectToLocal(returnUrl + "?PeopleInvolved?Success");
    }
}

您實際上並沒有更改數據庫中的任何內容。

您對數據庫的調用返回了PeopleInvolved對象,並將對它的引用存儲在peopleInvolved變量中。 然后,您將該變量更改為對模型對象上PeopleInvolved屬性的引用。 您實際上從未更改過從數據庫調用返回的對象。

簡單的解決方案是做類似的事情

peopleInvolved.Property1 = model.PeopleInvolved.Property1;
peopleInvolved.Property2 = model.PeopleInvolved.Property2;

更新從數據庫返回的實際對象。

您可以像這樣更新。 如果必須使用user.FormId覆蓋model.PeopleInvolved.FormId,請更新該屬性。

db.PeopleInvolved.Attach(model.PeopleInvolved);
db.Entry(model.PeopleInvolved)).State =  System.Data.Entity.EntityState.Modified;    
db.SaveChanges();

暫無
暫無

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

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