我正在尝试访问我创建的数据库以显示列表。我在我的控制器中这样做。它是红色的下划线部分。它说"名称db在当前上下文中不存在。"我在代码中错过了连接数据库的一些事情吗?
using System.Web;
using System.Web.Mvc;
using System.IO;
using System.Web.Helpers;
using MIS424Assignments.Models;
namespace MIS424Assignments.Controllers
{
[Authorize (Users="admin@wwu.edu")]
public class RetailController : Controller
{
// GET: Retail
[AllowAnonymous]
public ActionResult Index()
{
string sql = "Select * from Product order by newid()";
List<Product> productList = db.Product.SqlQuery(sql).ToList();
return View();
}
}
}
答案 0 :(得分:2)
试试这个
[Authorize (Users="admin@wwu.edu")]
public class RetailController : Controller
{
private readonly RetailStoreEntities1 db;
public RetailController()
{
db = new RetailStoreEntities1();
}
// GET: Retail
[AllowAnonymous]
public ActionResult Index()
{
string sql = "Select * from Product order by newid()";
List<Product> productList = db.Product.SqlQuery(sql).ToList();
return View();
}
}
答案 1 :(得分:0)
我没有看到连接字符串。这可能是问题吗? 如果您使用EF,是否在webconfig中配置了连接字符串。
当我第一次开始使用EF时,我常常被烧掉:-D
***更新**** 下面的代码将在Context类中作为构造子。
如果有帮助请告诉我
public YourContextClass():base(&#34; RetailStoreEntities1&#34;) {
}
答案 2 :(得分:0)
这里有人建议从存储库中执行所有数据库访问,并从控制器调用存储库方法。 但是,要快速回答您的问题。 您的项目应包含一个包含您的上下文的类
public class MyContext: DbContext
{
public MyContext()
: base("myconnstringinwebconfig")
{}
//more stuff here, maybe your entities.
}
在控制器顶部附近,应该有一行初始化你的上下文:
private MyContext db = new MyContext();
这将修复您的错误消息。