[英]Dictionary <string,string> map to an object using Automapper
[英]C# automapper core Dictionary<string, object>
我有一个dbo表记录,像:
CREATE TABLE records (
key VARCHAR(100) NOT NULL,
value_decimal DECIMAL(10, 5) NULL,
value_date DATETIME NULL
)
EF Core将此表映射为类记录,如下所示:
public class record {
public string key {get; set;}
public decimal? value_decimal {get; set;}
public DateTime? value_date {get; set;}
}
最后,API返回Dictionary<string, object>
像:
[HttpGet]
public Dictionary<string, object> getRecords()
{
return this.IRepository.records.ToDictionary(
d => d.key,
d => (object) new {
value_date = d.value_date,
value_decimal = d.value_decimal
});
}
这工作得很好,结果在JavaScript中像records["some_key"].value_decimal
。 完善!
现在,我需要[HttpPost]
方法,该方法将从JavaScript接收修改后的字典并将其映射回EF实体。 我最深的渴望看起来像:
[HttpPost]
public void saveRecords(Dictionary<string, object> payload)
{
var _records = this.IRepository.records.Where(w => /*some conditions*/);
AutoMapper.Map<Dictionary<string, object>, Models.EF_Entities.record>(
_records,
payload);
this.IRepository.SaveChanges();
}
有人做过这样的事情吗?
谢谢!
感谢*的努力。 解决方法已解决问题:
[HttpPost]
public void saveRecords(Dictionary<string, object> payload)
{
var _records = this.IRepository.records.Where(w => /*some conditions*/);
foreach (var kvp in payload)
{
var _record = _records.Where(w => w.key == kvp.Key).FirstOrDefault();
if (_record != null)
{
AutoMapper.Map(kvp.Value, _record);
}
}
this.IRepository.SaveChanges();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.