[英]C# automapper core Dictionary<string, object>
I have a dbo table Records like: 我有一个dbo表记录,像:
CREATE TABLE records (
key VARCHAR(100) NOT NULL,
value_decimal DECIMAL(10, 5) NULL,
value_date DATETIME NULL
)
EF Core maps this table into class record like this: EF Core将此表映射为类记录,如下所示:
public class record {
public string key {get; set;}
public decimal? value_decimal {get; set;}
public DateTime? value_date {get; set;}
}
And finally API returns Dictionary<string, object>
like: 最后,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
});
}
This works just fine, result is used in JavaScript like records["some_key"].value_decimal
. 这工作得很好,结果在JavaScript中像
records["some_key"].value_decimal
。 Perfect! 完善!
Now I need [HttpPost]
method which receives modified dictionary from JavaScript back and maps it to EF entity back. 现在,我需要
[HttpPost]
方法,该方法将从JavaScript接收修改后的字典并将其映射回EF实体。 My deepest whishes look like: 我最深的渴望看起来像:
[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();
}
Has anyone done something like this? 有人做过这样的事情吗?
Thanks! 谢谢!
Thanks to * for your effort. 感谢*的努力。 Problem has been solved by a workaround:
解决方法已解决问题:
[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.