2

我正在尝试从数据库中获取数据。

我的控制器代码:

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

我的视图代码:

@model IEnumerable<dynamic>

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

所以当我运行它时,我得到错误“对象”不包含“名称”的定义

4

1 回答 1

2

这与工作无关,因为当您告诉 LINQ to SQL 执行时,datacontext.executequery<dynamic>您实际上是在告诉它执行datacontext.executequery<object>

因此,您的查询返回的所有内容都是object类型。

原因是返回类型的映射是通过反射检查编译类型传递的 T 来发生的,并且由于您传递了dynamic,因此在编译时它等同于object

如果你真的想做这样的事情(动态 API),你可能想看看 Dapper - http://code.google.com/p/dapper-dot-net/

于 2012-09-12T21:39:01.587 回答