Is it possible to auto update only selected properties on an existent entity object without touching the others

Posted by LaserBeak on Stack Overflow See other posts from Stack Overflow or by LaserBeak
Published on 2012-07-06T02:37:29Z Indexed on 2012/07/06 3:15 UTC
Read the original article Hit count: 187

Say I have a bunch of boolean properties on my entity class public bool isActive etc. Values which will be manipulated by setting check boxes in a web application. I will ONLY be posting back the one changed name/value pair and the primary key at a time, say { isActive : true , NewsPageID: 34 } and the default model binder will create a NewsPage object with only those two properties set. Now if I run the below code it will not only update the values for the properties that have been set on the NewsPage object created by the model binder but of course also attempt to null all the other non set values for the existent entity object because they are not set on NewsPage object created by the model binder.

Is it possible to somehow tell entity framework not to look at the properties that are set to null and attempt to persist those changes back to the retrieved entity object and hence database ? Perhaps there's some code I can write that will only utilize the non-null values and their property names on the NewsPage object created by model binder and only attempt to update those particular properties ?

    [HttpPost]
    public PartialViewResult SaveNews(NewsPage Np)
    {
        Np.ModifyDate = DateTime.Now;
        _db.NewsPages.Attach(Np);
        _db.ObjectStateManager.ChangeObjectState(Np, System.Data.EntityState.Modified);
        _db.SaveChanges();
        _db.Dispose();


        return PartialView("MonthNewsData");
    }

I can of course do something like below, but I have a feeling it's not the optimal solution. Especially considering that I have like 6 boolean properties that I need to set.

[HttpPost]
public PartialViewResult SaveNews(int NewsPageID, bool isActive, bool isOnFrontPage)
{
        if (isActive != null)   { //Get entity and update this property }
        if (isOnFontPage != null) { //Get entity and update this property }
}

© Stack Overflow or respective owner

Related posts about asp.net-mvc

Related posts about asp.net-mvc-3