向ASP.NET MVC中的DefaultConnection数据库添加和使用表

时间:2016-11-02 05:40:18

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我尝试使用代码优先方法向MVC项目中的DefaultConnection数据库添加更多表。

我有以下设置:

MyClass.cs

public class MyClass
{
    public int Id { get; set; }
    public string Name{ get; set; }
    public int Age{ get; set; }
}

MyClassController.cs

 public class MyClassController : Controller
{
    public MyClassDbContext myClassDbContext = new MyClassDbContext();
    public ActionResult Index()
    {
        return View(myClassDbContext.MyClasses.ToList());
    }
}

MyClassDbContext.cs

public class MyClassDbContext: DbContext
{
    public DbSet<MyClass> MyClasses { get; set; }
}

我没有将ConnectionString更改为默认设置,因为它与用户注册和身份验证的数据库相同,我没有任何问题。

运行代码后,我在A network related or instance-specific error occurred while establishing a connection to SQL Server...上收到return View(myClassDbContext.MyClasses.ToList())错误。

问题:

我错过了一些基本的东西吗?

3 个答案:

答案 0 :(得分:2)

public class MyClassDbContext: DbContext
{
  public MyClassDbContext(string connString)
        : base(connString)
    {
    }
    public DbSet<MyClass> MyClasses { get; set; }
}

public class MyClassController : Controller
{
    public MyClassDbContext myClassDbContext = new MyClassDbContext("Name Of ConnectionString");
    public ActionResult Index()
    {
        return View(myClassDbContext.MyClasses.ToList());
    }
}

添加更多表,您需要使用构造函数。 上面的代码可以帮助你实现它。

答案 1 :(得分:1)

当您添加model例如MyClass时,您不需要添加新的DBContext,例如MyClassDbContext,只需添加MyClass即可您存在的DBContext适用于您的注册。像这样:

public class OldDbContext: DbContext
{
    public DbSet<MyClass> MyClasses { get; set; }
    public DbSet<User> Users{ get; set; }
}  

然后你需要在自动生成表中添加一个Initializer(更多检查this),或者你可以自己添加表,如果表与你的类匹配,它就可以工作。

答案 2 :(得分:-2)

请检查web.config中的连接字符串,看它是否有效。还要确保SQL Server已经连接。