use*_*273 33 c# asp.net asp.net-mvc asp.net-mvc-4 ef-migrations
我正在使用MVC 4,我必须使用Code First Migrations更新我的数据库.我要做的是从数据库表中选择记录,并将它们插入下拉列表,用户可以在其中选择一个.
我有一个我不明白的错误:
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.
控制器:
public ActionResult Addnew()
{
var dba = new DefaultConnection();
var query = dba.blob.Select(c => new SelectListItem
{
Value = c.id.ToString(),
Text = c.name_company,
Selected = c.id.Equals(3)
});
var model = new Companylist
{
xpto = query.AsEnumerable()
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
Var*_*n K 61
您收到此错误是因为Entity Framework不知道如何.ToString()
在sql中执行方法.因此,您应该使用加载数据ToList
,然后将其转换为SelectListItem:
var query = dba.blob.ToList().Select(c => new SelectListItem
{
Value = c.id.ToString(),
Text = c.name_company,
Selected = c.id.Equals(3)
});
Run Code Online (Sandbox Code Playgroud)
编辑:要更清楚,实体框架查询经营者的使用转换,如Select
,Where
ETC到一个SQL查询来加载数据.如果你调用一个类似的方法ToString()
,哪个实体框架在sql中没有等价物,它会抱怨.因此,我们的想法是在数据加载后推迟使用这些函数.ToList
,ToArray
ETC强制执行查询,从而加载数据.一旦数据被加载,任何进一步的操作(如Select
,Where
使用LINQ到对象已经在存储器中执行ETC),上的数据.
归档时间: |
|
查看次数: |
52002 次 |
最近记录: |