2

Я получаю сообщение об ошибке, как выше тег, который будет на местетипов аргументов «Edm.String» и «Edm.Int32» несовместимы для этой операции

возвращение View (st.employees. Найти (идентификатор));

выше место только, может ли кто-нибудь мне помочь! и мой код

 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

Посмотрите на сущность 'Employee'. Каков тип его «ключа»? –

+0

только для первичного ключа –

+0

Каков тип данных ключа в вашем классе. (Посмотрите на свойства поля в edmx или ваши файлы кода) –

ответ

2

Это исключение обычно происходит, когда ваш первичный ключ сущностей имеет тип A, и вы передаете переменную, которая не относится к типу A к методу Find.

С official documentation из Find метода, он может бросить ниже исключение

InvalidOperationException

Метательное если типы значений ключа не совпадают с типами ключевых значений для тип сущности, который будет найден.

Убедитесь, что вы используете переменную того же типа, когда вы вызываете метод Find.

В коде вы передаете целочисленную переменную методу Find. Из ошибки я считаю, что первичный ключ классов сущностей не является типом int. Возможно, это тип Guid, в этом случае убедитесь, что вы передаете действительное значение Guid в метод Find.

Вы можете открыть файл edmx и посмотреть тип ключа и убедиться, что вы передаете тот же самый тип методу Find.

Просто щелкните правой кнопкой мыши объект в вашем файле edmx и выберите свойства.

enter image description here

+0

Спасибо за ваше предложение, я новичок в mvc. Могу ли я узнать, что такое тип A. –

+0

Это может быть любой тип (пример: Guid). В коде вы передаете переменную int.Проверьте класс сущности в файле edmx, чтобы узнать, какой тип это – Shyju

+0

. Да, я не объявляю его как int. Я объявлен как varchar (50). Теперь какое значение i будет передано вместо 0. –

1

кажется, что вы следуете шаблон MVC.

Я получил эту ошибку, и это потому, что я передавал параметр id как целое, а не «string», как я объявил в моей модели.

Пример:

public class Object 
{ 
    public string id { get; set; } 
    public string property1{ get; set; } 
    public string property2{ get; set; } 
    public string property3{ get; set; } 
}