Asp.net mvc 优化mvc代码

Asp.net mvc 优化mvc代码,asp.net-mvc,optimization,Asp.net Mvc,Optimization,我有这样的密码 var prj = _dataContext.Project.FirstOrDefault(p => p.isPopular == true); if (prj != null) { prj.isPopular = false; _dataContext.SaveChanges(); } prj = Details(id); p

我有这样的密码

        var prj = _dataContext.Project.FirstOrDefault(p => p.isPopular == true);
        if (prj != null)
        {
            prj.isPopular = false;
            _dataContext.SaveChanges();
        }


        prj = Details(id);
        prj.isPopular = true;
        _dataContext.SaveChanges();
idea——我只有一条在isPopular字段中值为true的记录,所以我得到它并将其设为false,然后通过id获取对象并将其设为isPopular true。我不喜欢两次调用savechanges。 有什么想法吗

var prj = _dataContext.Project.FirstOrDefault(p => p.isPopular == true);
    if (prj != null)
    {
        prj.isPopular = false;
    }


    var prj2 = Details(id);
    prj2.isPopular = true;
    _dataContext.SaveChanges();

当然,您应该为prj2找到更好的变量名。

您的代码将无法编译。如果您将FirstOrDefault更改为Where,当没有IsPopular==true的记录时,if将抛出异常。我修复了它,我们都==偶尔会发生一次@jfar,这不是问题所在。我没看到。嗯。。。你确定要打电话给我吗?单身?prj是一个对象,没有单个method@user276640,这就是我第一次评论的意思。它不会编译。您还必须为第二行添加一个空检查,而不是使用单字符。
var prj = _dataContext.Project.FirstOrDefault(p => p.isPopular == true || p.id ==id);

prj.Single(p => p.isPpopular == true).IsPopular = false;

prj.Single(p => p.isPpopular == id).IsPopular = true;

_dataContext.SaveChanges();