所以我有一个具有这样属性的类:
public class Foo
{
[Column("GBBRSH")
public static string Gibberish { get; set;}
....
}
为了保存数据,我对其进行了配置,以便更新/插入语句使用自定义函数:
public static string GetTableColumnName(PropertyInfo property)
{
var type = typeof(ColumnAttribute);
var prop = property.GetCustomAttributes(type, false);
if (propr.Count() > 0)
return ((ColumnAttribute)prop.First()).Name;
return property.Name;
}
这处理得很好,但我注意到当我去检索数据时,它实际上并没有通过这个特定列的函数拉回数据。我注意到存在的其他数据已被提取,但有问题的列是唯一包含未检索数据的字段。
1) 有没有办法将 GetTableColumnName 函数用于 Dapper 的检索部分?
2)如果发生这种情况,有没有办法强制 Dapper.NET 抛出异常?我真的不想有一种错误的安全感,即一切都按预期工作,而实际上并非如此(我知道我正在使用 Dapper.NET 默认情况下不使用的映射,但我确实想要以这种方式设置)。
编辑:
我正在查看 Dapper 的 SqlMapper 源代码,发现:
private static IEnumerable<T> QueryInternal<T>(params) // my knowledge of generics is limited, but how does this work without a where T : object?
{
...
while (reader.Read())
{
yield return (T)func(reader);
}
...
}
所以我在找到这个后了解了两件事。阅读 Func 并阅读产量(以前从未使用过)。我的猜测是我需要将 reader.Read() 传递给另一个函数(检查列标题并适当地插入对象)并产生返回?