2013-03-07 30 views
2

我有以下代碼:如何賦值給了IEnumerable <dynamic>

var db = Database.Open("Text"); 
var headers = db.Query("SELECT * FROM Headers"); 

//headers is now an IEnumerable<dynamic> 

string s = headers[0].Text; // Works correctly 

headers[0].Text = "Some string"; 

如果我嘗試分配「一些字符串」的頭,我得到以下錯誤的Text屬性:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: WebMatrix.Data.DynamicRecord contains no definition for Text.

如何將標題對象轉換爲列表/數組,以便我可以爲其分配新值?

+0

值是隻讀的,你可以A)採用S =「一些字符串」或B),並嘗試使用更新查詢 – user2140261 2013-03-07 18:19:33

回答

3

問題是從WebMatrix返回的DynamicRecord類實際上是「只讀」的。 DynamicObject不允許設置Text

如果您想對值進行更改,而不是將它們留在原始dynamic類型中,則需要將此數據映射到您自己的類上。

+0

謝謝你的答案,但有到'DynamicRecord'地圖,使一般的方式我不必爲數據庫中的每個表編寫一個類。 – phippu 2013-03-07 19:48:25

+1

你可能想看看Massive - https://github.com/robconery/massive - 這是一個輕量級的ORM,它是一種奇特的說法,給我一些對象,我可以操作並獲取並放入數據庫。 – Knox 2013-03-08 14:58:03

相關問題