Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SaveChanges返回0,并且根本不保存数据_C#_Entity Framework - Fatal编程技术网

C# SaveChanges返回0,并且根本不保存数据

C# SaveChanges返回0,并且根本不保存数据,c#,entity-framework,C#,Entity Framework,实体框架的SaveChanges()方法遇到了一个奇怪的问题。问题是它返回0,并且根本不更新表数据。问题可能是什么?有什么想法吗?我必须更新现有的用户数据 [HttpPost] [Authorize(Roles = "User")] public ActionResult Settings(User _users) { using (MydbEntities db = new MydbEntities()) { var u = new User();

实体框架的
SaveChanges()
方法遇到了一个奇怪的问题。问题是它返回0,并且根本不更新表数据。问题可能是什么?有什么想法吗?我必须更新现有的用户数据

[HttpPost]
[Authorize(Roles = "User")]
public ActionResult Settings(User _users)
{
    using (MydbEntities db = new MydbEntities())
    {
        var u = new User();
        string _Email = User.Identity.GetUserId().ToString();

        if(db.Users.Any(x=>x.Email == _Email))
        {
            u.BusinessName = _users.BusinessName;
            u.Address = _users.Address;
            u.VatNumber = _users.VatNumber;
            u.PhoneNumber = _users.PhoneNumber;
            u.IsBusinessUser = _users.IsBusinessUser;

            var foo = db.SaveChanges();
        }
    }
}
我相信您正在尝试的是加载现有用户,如果它存在,则更新它

请尝试以下代码:

[HttpPost]
[Authorize(Roles = "User")]
public ActionResult Settings(User _users)
{
    using (MydbEntities db = new MydbEntities())
    {
        string _Email = User.Identity.GetUserId().ToString();

        // try to find the existing user in the database
        User existing = db.Users.FirstOrDefault(x => x.Email == _Email);

        if(existing != null)
        {
            // if you *DID* find a user - then update its properties
            existing.BusinessName = _users.BusinessName;
            existing.Address = _users.Address;
            existing.VatNumber = _users.VatNumber;
            existing.PhoneNumber = _users.PhoneNumber;
            existing.IsBusinessUser = _users.IsBusinessUser;

            var foo = db.SaveChanges();
        }
    }
}
首先,您加载现有用户,如果找到了一个,则更新其属性,现在
SaveChanges()
调用应该为您更新该现有用户