是否有任何快速方法可以將某些IDataReader映射到沒有第三方庫(如AutoMapper或ValueInjecter)的對象?將IDataReader映射到沒有第三方庫的對象
1
A
回答
1
我不知道你快的意思,但你可以使用反射把東西在一起。你需要做很多假設,比如所有對象的值都是通過屬性設置的。而且,您的DataReader列必須與您的對象屬性名稱匹配。但是你可以這樣做:
注意:SetProperty
函數來自DevX上的一篇文章。 (這是在VB.NET,我就轉換成C# - 如果有錯誤,我可能錯過了一些東西。)
IList<MyObject> myObjList = new List<MyObject>();
while (reader.Read()){
int fieldCount = reader.FieldCount;
MyObject myObj = new MyObject();
for(int i=0;i<fieldCount;i++){
SetProperty(myObj, reader.GetName(i), reader.GetOrdinal(i));
}
myObjList.Add(myObj);
}
bool SetProperty(object obj, String propertyName, object val) {
try {
//get a reference to the PropertyInfo, exit if no property with that
//name
System.Reflection.PropertyInfo pi = obj.GetType().GetProperty(propertyName);
if (pi == null) then return false;
//convert the value to the expected type
val = Convert.ChangeType(val, pi.PropertyType);
//attempt the assignment
pi.SetValue(obj, val, null);
return true;
}
catch {
return false;
}
}
不保證該代碼將運行(我只是打字它,而不是編譯/測試它),但它至少可能是一個開始。
我已經在過去做過這樣的事情,並且喜歡將屬性應用到我的屬性,聲明要映射到屬性的數據讀取器列。這裏包含太多的內容,但這只是一個啓動器,希望是你想要的。
希望這會有所幫助!
1
當然,
class MyObject
{
public string SomeProperty { get; set; }
public MyObject(IDataReader reader)
{
SomeProperty = reader.GetString(0);
// - or -
SomeProperty = reader.GetString(reader.GetOrdinal("SomeProperty"));
// etc.
}
}
相關問題
- 1. 的IntelliJ沒有找到第三方庫
- 2. RestKit沒有映射對象
- 3. 將java對象映射到數據庫
- 4. 將XML映射到Java對象庫
- 5. RestKit對象映射沒有映射我的對象
- 6. 連接表沒有映射到對象
- 7. RestKit映射對象沒有對象類
- 8. Json到Html(沒有第三方庫)
- 9. 將JSON映射到對象
- 10. 有沒有更好的方法將對象從數據庫查詢映射到對象?
- 11. 在Monotouch中綁定到第三方庫 - 映射uint8_t *和uint8_t **
- 12. 有沒有將Dynamo Db Map <String,AttributeValue>映射到對象的庫?
- 13. Java將對象映射到對象 - Moo
- 14. 將JSON對象映射到Javascript對象
- 15. 有沒有將數據映射到FHIR對象的標準方法和工具?
- 16. 將沒有root密鑰的對象映射到動態url?
- 17. 將XML映射到C#中沒有屬性的對象
- 18. 沒有xml的簡單對象到對象映射器?
- 19. 從JSON到NSObject的對象映射庫
- 20. 有沒有辦法將視圖模型對象自動映射到JavaScript對象?
- 21. 映射兩個源對象到三個對象
- 22. Scala如何將一對Seq對象映射到一個映射?
- 23. AutoMapper - 將類庫中的對象映射到silverlight類庫中的對象
- 24. JavaScript庫來映射對象?
- 25. 數據庫/對象映射
- 26. Restkit將對象映射到的NSArray
- 27. 數據庫映射到對象
- 28. C++ XML到C++對象映射庫?
- 29. 沒有映射從對象類型C#
- 30. elasticsearch映射沒有JSON對象錯誤
我猜測downvote是因爲答案明顯嗎? @MSS沒有說明他們已經考慮並拒絕了這個明顯的問題。這不僅是一個有效的答案,它是我在自己的項目中使用的答案。我喜歡這樣的事實,即它明確了哪些對象參與數據庫序列化。 – Tergiver 2011-02-24 13:44:11