2012-09-12 54 views
1

我試圖從數據庫中獲取數據。獲取datacontext返回的動態對象的屬性.ExecuteQuery

我控制器代碼:

var data = datacontext.executequery<dynamic>("select id, name from sometable"); 
return View(data); 

我的視圖代碼:

@model IEnumerable<dynamic> 

@foreach(var item in Model) 
{ 
@item.name 
} 

所以當我運行它,我得到錯誤 '對象' 不包含 '名'

+0

你得到的第一行或item.name錯誤? –

回答

2
定義

這沒有任何工作的業務,因爲當你告訴LINQ to SQL做datacontext.executequery<dynamic>你有效地告訴它執行datacontext.executequery<object>

因此,您的查詢返回的所有內容均爲object類型。

其原因,是返回類型的映射發生通過與反射的T通過在編譯類型檢查,並且因爲你通過動態,在編譯時這是相當於對象

如果你真的想要做這樣的事情(動態API),你可能想看看小巧玲瓏 - http://code.google.com/p/dapper-dot-net/