我正在尝试从数据库中获取数据。
我的控制器代码:
var data = datacontext.executequery<dynamic>("select id, name from sometable");
return View(data);
我的视图代码:
@model IEnumerable<dynamic>
@foreach(var item in Model)
{
@item.name
}
所以当我运行它时,我得到错误“对象”不包含“名称”的定义
我正在尝试从数据库中获取数据。
我的控制器代码:
var data = datacontext.executequery<dynamic>("select id, name from sometable");
return View(data);
我的视图代码:
@model IEnumerable<dynamic>
@foreach(var item in Model)
{
@item.name
}
所以当我运行它时,我得到错误“对象”不包含“名称”的定义
这与工作无关,因为当您告诉 LINQ to SQL 执行时,datacontext.executequery<dynamic>
您实际上是在告诉它执行datacontext.executequery<object>
因此,您的查询返回的所有内容都是object
类型。
原因是返回类型的映射是通过反射检查编译类型传递的 T 来发生的,并且由于您传递了dynamic,因此在编译时它等同于object。
如果你真的想做这样的事情(动态 API),你可能想看看 Dapper - http://code.google.com/p/dapper-dot-net/