2016-09-30 3 views
2

Я новичок в MVC 5. Я хочу отобразить список выбранных данных из базы данных. Я создал действие контроллера, в котором использовался необработанный запрос и класс или модель IEnumerable. Но контроллер возвращает ошибку:Вызов запроса, возвращаемого в MVC 5

An exception of type 'System.Data.SqlClient.SqlException' occurred in EntityFramework.SqlServer.dll but was not handled in user code

Additional information: Invalid object name 'tblProduct'.

Моя Модель:

namespace ShoppingCartProject1.Models 
    { 
    public class tblProduct:IEnumerable<tblProduct> 
    { 
    [Key] 
    public int PId { get; set; } 
    public string Pname { get; set; } 

    List<tblProduct> mylist = new List<tblProduct>(); 
    public IEnumerator<tblProduct> GetEnumerator() 
    { 
     return mylist.GetEnumerator(); 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return this.GetEnumerator(); 
    } 
    public tblProduct this[int index] 
    { 
     get { return mylist[index]; } 
     set { mylist.Insert(index, value); } 
    } 
} 
} 

Контроллер:

[HttpPost] 
    public ActionResult SearchResult(string searched) 
    { 
     if (searched== null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 

     // Commenting out original code to show how to use a raw SQL query. 
     //Department department = await db.Departments.FindAsync(id); 

     // Create and execute raw SQL query. 
     string query = "select * from tblProduct where FREETEXT (Meta, 'branded')"; 
     IEnumerable<tblProduct> data = db.Database.SqlQuery<tblProduct>(query); 

     if (data == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(data.ToList()); 
    } 
} 
} 

ошибка видно, указывая в сторону оператора возврата.

и представления:

@foreach (var item in Model) 
    { 
     <img src="~/images/@item.Image1" alt="" class="pro-image-front"> 
     <img src="~/images/@item.Image2" alt="" class="pro-image-back"> 
    } 

что я сделал:

  • проверил контроллер через Breakpoints: Элемент данных не получает значение из базы данных.
  • изменил функции модели.

ответ

0

Похоже, что имя таблицы, за которой вы находитесь, не является «tblProduct». Я предполагаю, что это скорее будет «tblProducts», поэтому, если вы измените свой SQL-запрос, он должен работать.

Это предполагает, что вы создали эту таблицу в базе данных SQL - трудно сказать, не глядя на схеме

string query = "select * from tblProducts where FREETEXT (Meta, 'branded')"; 
IEnumerable<tblProduct> data = db.Database.SqlQuery<tblProduct>(query); 

пс. ошибка выглядит так, как будто она исходит из оператора return, потому что именно там запрос фактически выполняется против db.

0

Неверное имя таблицы. Попробуйте изменить его на yourdbname.dbo.tblProduct. Сначала попробуйте выполнить необработанный запрос в SQL Management Studio с теми же параметрами подключения.

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