在 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 中执行原始查询。
我是 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 中执行原始查询。