Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 更新实体框架中的多个列_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 更新实体框架中的多个列

C# 更新实体框架中的多个列,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我想更新实体框架中的多个列。我现在用这个: var user = new Relations { Id=1, Status = 1, Date = DateTime.Now, Notification = 0 }; db.Relations.Attach(user); db.Entry(user).Property(x => x.Status).IsModified = true; db.Entry(user).Property(x => x.Notification).IsMo

我想更新实体框架中的多个列。我现在用这个:

var user = new Relations { Id=1, Status = 1, Date = DateTime.Now, Notification = 0 };

db.Relations.Attach(user);

db.Entry(user).Property(x => x.Status).IsModified = true;
db.Entry(user).Property(x => x.Notification).IsModified = true;
db.Entry(user).Property(x => x.Date).IsModified = true;

db.Configuration.ValidateOnSaveEnabled = false;
db.SaveChanges();
有没有更好的方法来更新列而不重复代码
db.Entry(user.Property)
多次?

我更喜欢使用:

var existingUser = context.Set<User>().Where(u => u.Id == 1);
context.Entry(existingUser).CurrentValues.SetValues(user);
var existingUser=context.Set(),其中(u=>u.Id==1);
context.Entry(existingUser).CurrentValues.SetValues(user);

或者您可以使用第三个库,如。

您可以像这样使用
EntityState

var user=db.users.Find(userId);
user.name="new name";
user.age=txtAge.text;
user.address=txtAddress.text;
context.Entry(user).State=Entitystate.Modified;
试试这个

using (var db = new YourDb())
            {
                try
                {
                    db.Entry(user).State = EntityState.Modified;
                }
                catch (Exception)
                {
                    return false;
                }

                db.SaveChanges();
                return true;
            }

Yo更新一个实体,您无需执行此操作:

// build your entity object with new values
var user = new Relations { Id=1, Status = 1, Date = DateTime.Now, Notification = 0 };
//attach as modified in one single step
db.Entry(user).State = EntityState.Modified;
//execute update
db.SaveChanges();

这假设您正在设置所有实体字段,而实体中没有RowVersion字段。需要额外的步骤来管理这些其他情况。

通过项目所在的上下文获取项目时

在该上下文中自动跟踪,除非您更改默认行为

因此,您可以简单地执行以下操作:

var txtInputAge = 18;
var txtAdrressLine1 = "Some cool place"

//fetch the user
var user = db.Users.Find(userId);

//change the properties
user.Name = "new cooler name";
user.Age = txtInputAge;
user.Address = txtAdrressLine1;

//call save changes
db.SaveChanges();
更新-添加看起来像

//create new entry
User user = new User();

user.Name = "new cooler name";
user.Age = txtInputAge;
user.Address = txtAdrressLine1;

//add to context
db.Users.Add(user);

//call save changes
db.SaveChanges();

您有什么理由不简单地将条目状态设置为“已修改”吗?您需要仅为
用户
对象标记
entitystate
已修改。为什么它还不被接受?不太冗长,效果很好+1.