在 MVC 5 中调用 Returns 的查询

Calling a Query that Returns in MVC 5

我是 MVC 5 的初学者。我想显示数据库中选定数据的列表。我创建了一个使用原始查询和 IEnumerable class 或模型的控制器操作。但是控制器 return 出现错误:

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());
    }
}
}

看到错误指向 return 语句。

视图:

    @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">
    }

我做了什么:

看起来您要找的 table 名字不是 "tblProduct" - 我猜它更有可能是 "tblProducts",所以如果您修改 SQL 查询它应该工作。

这是假设您已经在 sql 数据库中创建了 table - 如果不查看模式很难判断

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

ps。该错误看起来像是来自 return 语句,因为这是针对数据库实际执行查询的地方。

似乎 table 名称不正确。尝试将其更改为 yourdbname.dbo.tblProduct。首先尝试使用相同的连接参数在 SQL Management Studio 中执行原始查询。