此代码是禁止的
var errors = (from error in db.ELMAH_Error
select new
{
error.Application,
error.Host,
error.Type,
error.Source,
error.Message,
error.User,
error.StatusCode,
error.TimeUtc
}).ToList();
return View(errors);
因为它导致'需要一个IEnumerable类型的模型'错误。以下代码当然可以正常工作,但选择所有列,其中一些我根本不感兴趣:
var errors = (from error in db.ELMAH_Error
select error).ToList();
return View(errors);
我是MVC2 + L2E的新品牌,所以也许我只是没有思考正确的思维方式,但这似乎是违反直觉的。是否有一种简单的方法可以选择有限数量的列,或者这只是使用ORM的一部分?
答案 0 :(得分:1)
这不是L2E / L2S的问题,而是MVC强类型视图。
我认为这不仅仅是“需要IEnumerable
类型的模型”,而是“类型为IEnumerable<Something>
的模型”。如果您有一个强类型视图绑定到错误表的类型,然后尝试传递查询创建的匿名类型(通过select new {...}
)将导致类型不匹配。
您可以创建一个仅包含所需行的新类型,并将其用作视图页面模型,或者您可以执行完全选择,然后限制ASP代码中的列。