所以我有這樣的屬性的類:與數據註釋Dapper.NET映射
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默認不使用的映射,但我確實希望以這種方式進行設置)。
編輯:
我期待在小巧玲瓏的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()傳遞給另一個函數(該函數檢查列頭並適當地插入到對象中)並返回那個?
您可以將您的select語句更改爲「SELECT [Column(」GBBRSH「)] AS Gibberish」並提供屬性名稱和poco屬性名稱之間的映射。那樣,小巧玲瓏就會填充匹配的屬性。 Dapper要求您的POCO匹配列的確切名稱。 – Alex 2013-05-02 09:07:46
我確實喜歡這個建議。我會嘗試一下(看不出它不會起作用)。你想將你的評論轉換爲答案嗎?我會將其標記爲答案,因爲這或多或少是我正在尋找的答案。 – Robert 2013-05-02 13:17:29