Asp.net mvc 实体框架-更新数据库-不创建数据库
Visual Studio 2013 我正试图在PluralSight学习asp.NETMVC。我创建了一个名为eManagr.Domain的项目(dll),其中包含以下类: 部门/员工/IDepartmentDatasource 科室Asp.net mvc 实体框架-更新数据库-不创建数据库,asp.net-mvc,entity-framework-5,Asp.net Mvc,Entity Framework 5,Visual Studio 2013 我正试图在PluralSight学习asp.NETMVC。我创建了一个名为eManagr.Domain的项目(dll),其中包含以下类: 部门/员工/IDepartmentDatasource 科室 public class Department { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual I
public class Department
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
IDepartmentDataSource
public interface IDepartmentDataSource
{
IQueryable<Employee> Employees { get; }
IQueryable<Department> Departments { get; }
}
EDIT--Web.Config中的连接字符串--
当我运行以下命令时,我得到以下响应:
PM>更新数据库
指定'-Verbose'标志以查看应用于目标数据库的SQL语句。
没有挂起的基于代码的迁移。
运行种子法。
PM>
运行此操作后,我想在我的App_数据中看到一个数据库文件,但它不存在。当我使用SQL Server对象资源管理器时,即使我正试图这样做,也不会创建该数据库。能否从Web.config提供连接字符串? 此外,是否存在与连接字符串同名的数据连接(服务器资源管理器->数据连接) 我认为,向DepartmentDb上下文类添加一个无参数构造函数可以解决您的问题
public DepartmentDb ()
: base("name=DefaultConnection")
其中name=DefaultConnection必须是您的连接字符串名称我注意到您以正确的方式启用了迁移,您是否运行了: 添加迁移“给它一个名字”? 完成此操作后,您将注意到migrations文件夹中有一个新文件。
如果不创建新的迁移,您将无法更新数据库。我刚刚遇到了类似的情况。我在学习以下ASP.NET MVC教程时遇到了它: 在我的例子中,问题似乎是我已经有了一个同名的数据库表。大约一个月前,我已经完成了部分教程,但被打断,不得不放弃。尽管我删除了整个项目,但似乎数据库表名可能已被保留 我说似乎是,因为问题消失了,解决方案如下:在第二次删除项目后,我在所有相关情况下小心地用“Contoso”替换“Contosuniversity” 在问题解决之前,在尝试更新数据库时,我在PackageManager控制台中反复出现(0x80131904错误),并注意到mdf文件无法连接到数据库。但是,当我检查相应的目录时,mdf文件甚至没有被创建 仅供参考,对于在Visual Studio 2012中开始MVC ers,我建议您在阅读上述MVC教程之前先阅读以下MVC教程。 MVC5 Visual Studio 2013版本也可通过该链接获得。 第一段的教程做了一些跳跃
如果我从EF5教程开始作为我的第一个MVC项目,我就无法调试这个问题。谢谢。。我撞了我的头,这很简单。我所做的是基于我所遵循的一个教程,并且正在做的人在他的类中没有连接字符串,但它在他的实例中起作用。
public class DepartmentDb : DbContext, IDepartmentDataSource
{
public DbSet<Employee> Employees {get; set;}
public DbSet<Department> Departments {get; set;}
IQueryable<Employee> IDepartmentDataSource.Employees
{
get { return Employees; }
}
IQueryable<Department> IDepartmentDataSource.Departments
{
get { return Departments; }
}
}
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(eManager.Web.Infrastructure.DepartmentDb context)
{
context.Departments.AddOrUpdate(t => t.Name,
new Department() { Name="Engineering"},
new Department() { Name = "Sales" },
new Department() { Name = "Shipping" },
new Department() { Name = "HR" }
);
}
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-eManager.Web-20140216202751;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-eManager.Web-20140216202751.mdf" providerName="System.Data.SqlClient" />
public DepartmentDb ()
: base("name=DefaultConnection")