Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 实体框架仅更新特定列-EntityState.Modified错误和Attach错误_C#_Entity Framework - Fatal编程技术网

C# 实体框架仅更新特定列-EntityState.Modified错误和Attach错误

C# 实体框架仅更新特定列-EntityState.Modified错误和Attach错误,c#,entity-framework,C#,Entity Framework,我在查看stackoverflow,看到了一些选择的答案,这让我相信这样做很好,但我得到了这个错误 //db.Entry(tips).State = EntityState.Modified; db.tblTips.Attach(tips); db.Entry(tips).Property(x => x.createdby).IsModified = false; db.Entry(tips).Property(x => x.created).IsModified = false;

我在查看stackoverflow,看到了一些选择的答案,这让我相信这样做很好,但我得到了这个错误

//db.Entry(tips).State = EntityState.Modified;
db.tblTips.Attach(tips);
db.Entry(tips).Property(x => x.createdby).IsModified = false;
db.Entry(tips).Property(x => x.created).IsModified = false;
tips.updated = DateTime.Now;
var recordsUpdated = db.SaveChanges();
以下任一行的错误

db.Entry(tips).State = EntityState.Modified;
or..
db.tblTips.Attach(tips);
附加“BRM.Data.Models.tblTips”类型的实体失败,因为相同类型的另一个实体已具有相同的主键值。如果图形中的任何实体具有冲突的键值,则在使用“Attach”方法或将实体状态设置为“Unchanged”或“Modified”时可能会发生这种情况。这可能是因为某些实体是新的,尚未收到数据库生成的键值。在这种情况下,使用“添加”方法或“添加”实体状态跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”

我应该这样做:

if (TryUpdateModel(newsToUpdate, "",
           new string[] { "LastName", "FirstMidName", "EnrollmentDate" }))
我也会有int和datetime

更新

1. Should I use `db.Entry(newsToUpdate).State = EntityState.Modified;` 
2. OR use `db.Entry(newsToUpdate).State = EntityState.Modified;`
下面我看到,如果使用方法参数中的model来更新特定字段,然后对从数据库中提取的模型
newToUpdate
使用
.Entry
,这看起来“ok”吗

好的,这个有效

代码:


第一个问题是:
db
的寿命是多少?我从来没有想过,在我的控制器中,我在类的顶部将它定义为private DOCContext db=new DOCContext();然后,只要操作方法运行,它就会有效地持续。所以下一个问题是,在
db.tblTips.Attach(tips)之前会发生什么?这都是尝试和错误。相反,请提供异常类型(例如,
NullReferenceException
)、异常消息和堆栈跟踪。查看我的答案,我想我可以编辑我的问题,但我将发布一个答案,我知道我正在“接近”thx
db.Entry(newsToUpdate).State = EntityState.Modified;
//db.tblTips.Attach(newsToUpdate);
db.Entry(newsToUpdate).Property(x => x.createdby).IsModified = false;
db.Entry(newsToUpdate).Property(x => x.created).IsModified = false;
newsToUpdate.updated = DateTime.Now;
newsToUpdate.body = tips.body;
newsToUpdate.title = tips.title;
var recordsUpdated = db.SaveChanges();
db.Entry(newsToUpdate).State = EntityState.Modified;
//db.tblTips.Attach(newsToUpdate);
db.Entry(newsToUpdate).Property(x => x.createdby).IsModified = false;
db.Entry(newsToUpdate).Property(x => x.created).IsModified = false;
newsToUpdate.updated = DateTime.Now;
newsToUpdate.body = tips.body;
newsToUpdate.title = tips.title;
var recordsUpdated = db.SaveChanges();