Controller

时间:2017-04-14 16:50:46

标签: c# asp.net-mvc entity-framework

我正在尝试访问我创建的数据库以显示列表。我在我的控制器中这样做。它是红色的下划线部分。它说"名称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();
        }
    }
}

3 个答案:

答案 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();

这将修复您的错误消息。