我编写了一个应用程序,用作代理从数据库中查询数据并自动将其加载到我的分布式 Web 缓存中。
我通过在配置中指定一个 sql 查询和一个类型来做到这一点。实际执行查询的代码如下所示:
List<Object> result = null;
try { result = dc.ExecuteQuery(elementType, entry.Command).OfType<Object>().ToList(); }
catch (Exception ex) { HandleException(ex, WebCacheAgentLogEvent.DatabaseExecutionError); continue; }
elementType
是从配置中指定的类型创建的 System.Type(使用Type.GetType()
),并且entry.Command
是 SQL 查询。
我遇到问题的特定实体类型如下所示:
public class FooCount
{
[Column(Name = "foo_id")]
public Int32 FooId { get; set; }
[Column(Name = "count")]
public Int32 Count { get; set; }
}
SQL 查询如下所示:
select foo_id as foo_id, sum(count) as [count]
from foo_aggregates
group by foo_id
order by foo_id
出于某种原因,当查询被执行时,“Count”属性最终被填充,而不是“FooId”属性。我尝试自己运行查询,并返回正确的列名,并且列名与我在映射属性中指定的匹配。帮助!