Я использую ValueInjecter
nuget для внедрения Binding Model в объект базы данных, используя следующее:
public async Task<IHttpActionResult> Add(CustomBindingModel model)
{
var entity= await db.MyEntities.FindAsync(model.Id);
if (entity== null) return NotFound();
entity.InjectFrom<NoNullsInjection>(model);
await db.SaveChangesAsync();
return Ok();
}
Обратите внимание на использование пользовательского соглашения, которое не обновляет Свойства, если они являются нулевыми с сервера.
ValueInjecter v3 +
public class NoNullsInjection : LoopInjection
{
protected override void SetValue(object source, object target, PropertyInfo sp, PropertyInfo tp)
{
if (sp.GetValue(source) == null) return;
base.SetValue(source, target, sp, tp);
}
}
Использование:
target.InjectFrom<NoNullsInjection>(source);
Значение Injecter V2
Поиск этот ответ
Протест
Вы не будете знать, было ли свойство намеренно очищено до нуля, ИЛИ оно просто не имело никакого значения. Другими словами, значение свойства может быть заменено только другим значением, но не очищено.