所以我有一个模型存储库,它利用 C# AWS SDK for Dynamo。现在有点难看。我想要的是将结果项丢弃到我的模型中。进入 Dynamo 很棒。我只是对我的 Poco 课程进行一些类型反思,然后像这样将它们推入:
var doc = new Document();
foreach (PropertyInfo prop in model.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
var propName = (string)prop.Name;
// dont add if value is null
if (prop.GetValue(model, null) != null)
{
if (prop.PropertyType == typeof(string))
doc[propName] = (string)prop.GetValue(model, null);
if (prop.PropertyType == typeof(List<string>))
doc[propName] = (List<string>)prop.GetValue(model, null);
if (prop.PropertyType == typeof(float))
doc[propName] = (float)prop.GetValue(model, null);
}
}
但是在 repo 中,我不想在检索项目时编写这个丑陋的手动转换。是否有 AWS 助手可以减少手动操作?我想我可以编写上述循环的逆循环并获取属性属性名称,然后在每个 N、S、SS 类型等上测试 null。
var request = new ScanRequest
{
TableName = TableName.User,
};
var response = client.Scan(request);
var collection = (from item in response.ScanResult.Items
from att in item
select new User(att.Value.S, att.Value.N, att.Value.S, att.Value.N, att.Value.S, att.Value.S, att.Value.S, att.Value.S, att.Value.S,
att.Value.S, att.Value.S, att.Value.S, att.Value.S, att.Value.SS, att.Value.SS)).ToList();
return collection.AsQueryable();