我尝试使用代码优先方法向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())
错误。
问题:
我错过了一些基本的东西吗?
答案 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已经连接。