2012-05-19 3 views
0

У меня есть две таблицы в моей базе данных MS Sql, Course и StudyCase, с идентификатором FK (таблица курса) до Course_ID (в таблице StudyCase). Я пытаюсь найти идентификатор StudyCase из идентификатора курса.Невозможно неявно преобразовать тип 'string' в 'long'

В Repository:

public IQueryable<StudyCase> ListStudyCases(long courseId) 
     { 
      return _dbContext.StudyCases.Where(c => c.Course_ID == courseId); 
     } 

В StudyCases Услуги:

public IQueryable<StudyCase> ListStudyCases(long courseId) 
    { 
     return this._StudyCaseRepository.ListStudyCases(courseId); 
    } 

В StudyCases IServices:

IQueryable<StudyCase> ListStudyCases(long courseId); 

Sending действие от контроллера курса:

return RedirectToAction("Index", "CourseCases", new { courseId = 6 }); 

В контроллере StudyCase:

public ActionResult Index(long courseId) 
     { 
      string id = ""; 
      id = _studyCaseSvc.ListStudyCases(courseId).First().ID.ToString(); 
      StudyCase cases = _studyCaseSvc.GetStudyCase(id); 
... 

я получаю две ошибки:

Cannot implicitly convert type 'string' to 'long' 

и

The best overloaded method match for 'IStudyCaseService.GetStudyCase(long)' has some invalid arguments 

будет признательна ваша помощь.

ответ

0

Просто используйте аргумент action, не преобразовывая его в строку.

public ActionResult Index(long courseId) 
    { 
     var id = _studyCaseSvc.ListStudyCases(courseId).First().ID; 
     StudyCase cases = _studyCaseSvc.GetStudyCase(id); 
+0

Большое вам спасибо. – hncl

0

Вы объявляете id как строку, если вы хотите использовать его в качестве аргумента для GetStudyCase, он должен быть long. Если вы хотите передать строку, то GetStudyCase должен иметь перегрузку, которая принимает строку.

Я новичок в MVC, но это больше похоже на общий вопрос C#, чем конкретный, относящийся к MVC.

Смежные вопросы