Rai*_*nds 2 c# entity-framework
我相信这是在其他地方问的,但我找不到直接的解决方案.我的Api是传递对象模型,在服务器端,未传递的该对象的每个值都被视为null(有意义).有没有办法告诉EF6不要以传递对象的方式更新具有空值的实体,这样我就不必编写每个属性并检查它是否为空.
伪代码
API
Update(int id, TaskEntity obj)
{
unitOfWork.Tasks.Update(id, userTask);
...
unitOfWork.Save()
}
Run Code Online (Sandbox Code Playgroud)
回购更新
Update(int id, T entity)
{
var existingRecord = Get(id); //Gets entity from db based on passed id
if (existingRecord != null)
{
var attachedEntry = Context.Entry(existingRecord);
attachedEntry.CurrentValues.SetValues(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是任何具有空值的数据实际上都会用空值重写现有的db记录值.
请指出解决方案或文章.我应该去反思,也许automapper可以处理这个(我认为这不是它的目的),或者应该编写某种辅助方法,因为我的对象可以包含子对象.
先感谢您.
你可以做这样的事情
Update(int id, T entity,string[] excludedFields)
{
var existingRecord = Get(id); //Gets entity from db based on passed id
if (existingRecord != null)
{
var attachedEntry = Context.Entry(existingRecord);
attachedEntry.CurrentValues.SetValues(entity);
for(var field in excludedFields)
{
attachedEntry.Property(field).IsModified = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
一些场景要求你更新对象的一部分,有时甚至更新其他部分,我认为最好的方法是传递字段以从更新中排除
希望它会对你有所帮助
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |