如何解决LINQ to Entities无法识别方法\'System.String ToString\',因此该方法无法转换为商店表达式
| 这是我的控制器课public class HomeController : Controller
{
private rikuEntities rk = new rikuEntities();
public ActionResult Index()
{
var db = new rikuEntities();
IEnumerable<SelectListItem> items = db.emp.Select(c => new
SelectListItem
{
Value = c.Id.ToString(),Text = c.name
});
ViewBag.CategoryID = items;
return View();
}
}
这是我的看法
@using (Html.BeginForm(\"viewToController\",\"Home\"))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>emp</legend>
<div class=\"editor-field\">
@Html.DropDownList(\"CategoryID\",(IEnumerable<SelectListItem>) ViewBag.Categories)
</div>
<p>
<input type=\"submit\" value=\"Create\" />
</p>
</fieldset>
}
每当我运行此程序时,都会出现此错误:
LINQ to Entities无法识别方法\'System.String ToString()\',并且该方法无法转换为商店表达式。\“在语句@ Html.DropDownList(\” CategoryID \“,(IEnumerable)我正在使用实体框架机制进行数据库连接。请帮助我找出错误...
解决方法
我建议您使用视图模型和强类型视图而不是ViewBag。因此,从定义视图模型开始:
public class EmployeeViewModel
{
public string CategoryId { get; set; }
public IEnumerable<Employee> Categories { get; set; }
}
然后在控制器中填充此视图模型:
public class HomeController : Controller
{
public ActionResult Index()
{
var db = new rikuEntities();
var model = new EmployeeViewModel
{
Categories = db.emp.ToArray() // <-- you probably want categories here
};
return View(model);
}
}
并在视图中:
@model EmployeeViewModel
@using (Html.BeginForm(\"viewToController\",\"Home\"))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>emp</legend>
<div class=\"editor-field\">
@Html.DropDownListFor(
x => x.CategoryId,new SelectList(Model.Categories,\"Id\",\"name\")
)
</div>
<p>
<input type=\"submit\" value=\"Create\" />
</p>
</fieldset>
}
, 可悲的是,EF不知道如何将“ 5”转换为SQL语句。
因此,您必须使用嵌入式函数SqlFunctions.StringConvert。
int
没有重载,因此您需要输入cast7ѭ:-(
var items = from v in db.emp
select new SelectListItem
{
Text = c.name,Code = SqlFunctions.StringConvert((double)c.Id)
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。