我收到的错误就像上面的标签一样,会出现在
的位置只在上面的地方,任何人都可以帮助我!我的代码是return View(st.employees.Find(id));
namespace StartApp.Controllers
{
public class EmployController : Controller
{
StartEntities st = new StartEntities();
//List
public ActionResult List()
{
return View(st.employees.ToList());
}
//Details
public ActionResult Details(int id = 0)
{
return View(st.employees.Find(id));
}
//Create
public ActionResult Create()
{
return View();
}
[HttpPost,ValidateAntiForgeryToken]
public ActionResult Create(employee e)
{
using(st)
{
st.employees.Add(e);
try
{
st.SaveChanges();
}
catch
{
System.Diagnostics.Debug.WriteLine("Here is an error");
}
}
return RedirectToAction("List");
}
//edit
public ActionResult Edit(int id = 0)
{
return View(st.employees.Find(id));
}
[HttpPost,ValidateAntiForgeryToken]
public ActionResult Edit(employee e)
{
st.Entry(e).State = EntityState.Modified;
st.SaveChanges();
return RedirectToAction("List");
}
//Delete
public ActionResult Delete(int id = 0)
{
return View(st.employees.Find(id));
}
[HttpPost,ActionName("Delete")]
public ActionResult Delete_conf(int id)
{
employee emp = st.employees.Find(id);
st.employees.Remove(emp);
st.SaveChanges();
return RedirectToAction("List");
}
}
}
任何人都可以帮我纠正这个错误!
答案 0 :(得分:3)
当您的实体主键是A类并且您将一个非A类型的变量传递给Find
方法时,通常会发生此异常。
从Find
方法的official documentation,它可能会抛出以下异常
<强>出现InvalidOperationException 强>
如果键值的类型与类型不匹配,则抛出 要找到的实体类型的键值。
确保在调用Find
方法时使用相同的类型变量。
在您的代码中,您将整数变量传递给Find
方法。从错误中我相信你的实体类主键不是int类型。可能是Guid
类型,在这种情况下,请确保将有效的Guid值传递给Find
方法。
您可以打开edmx文件并查看密钥类型,并确保将相同类型传递给Find
方法。
右键单击edmx文件中的实体,然后选择属性。
答案 1 :(得分:1)
好像你正在遵循MVC模式。
我也遇到了这个错误,这是因为我将id参数作为整数传递而不是我在模型中声明的“string”。
样品:
#parent{
background:yellow;
display:inline-flex;
}
.left{
display:flex;
flex: 1 1 auto;
}
.right{
display:flex;
background-color:red;
}
答案 2 :(得分:0)
Find()
只接受数据类型与您将要使用Find()
的表的主键类似的参数。