我试图仅通过动态发送给API的值来更新实体,因此每次客户端将不同的值发送给我的api时,它只会更改给定的值。
这是我的实体
public class Administrator
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string Role { get; set; }
public int Phone { get; set; }
}
这是我的存储库:
public Task<bool> UpdateAdmin(Administrator admin)
{
if (admin != null)
{
_context.Admins.Update(admin);
Commit();
return Task.FromResult(true);
}
else
{
return Task.FromResult(false);
}
}
可以说我只想更新电话号码,我只用新的电话号码发送数据,但其余属性也更改为null。如何只更新给定的?
谢谢
根据您的评论,管理员每次都会收到不同的字段内容。
因此,您可以reflection
用来dynamically
确定admin接受的每个字段的值是否为null。如果不是,请替换data的相应字段的值。
public Task<bool> UpdateAdmin(Administrator admin)
{
if (admin != null)
{
var data = _context.Admins.Find(admin.Id);
Type t = typeof(Administrator);
PropertyInfo[] propInfos = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var item in propInfos)
{
var fieldValue = item.GetValue(admin);
if (fieldValue != null)
{
item.SetValue(data, fieldValue);
}
}
_context.Admins.Update(data);
Commit();
return Task.FromResult(true);
}
else
{
return Task.FromResult(false);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句