Visual Studio 2013
我正在尝试在 PluralSight 学习 asp.net MVC。我创建了一个名为 eManagr.Domain 的项目(dll),其中包含以下类: 部门/员工/IDepartmentDatasource
部门.cs
public class Department
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
员工.cs
public class Employee
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
IDepartment数据源
public interface IDepartmentDataSource
{
IQueryable<Employee> Employees { get; }
IQueryable<Department> Departments { get; }
}
我使用以下文件创建了一个基础结构文件夹:DepartmentDb.cs
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; }
}
}
然后,我在创建项目期间使用 MVC 4 创建了另一个名为 eManager.Web 的项目,其中包含 Internet 模板。
运行 Enable-Migration 时,它说我有两个 [eWeb.Domain 、 eWeb.Model.Users],然后我使用以下命令告诉它 Enable-Migration:
启用迁移-ContextTypeName DepartmentDb
它创建迁移文件夹和一个名为 Configurations.cs 的文件
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" }
);
}
编辑 -- 来自 Web.Config 的连接字符串 --
<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" />
当我运行以下命令时,我得到以下响应: PM> 更新数据库 指定“-Verbose”标志可查看应用于目标数据库的 SQL 语句。 没有待处理的基于代码的迁移。 运行种子方法。 下午>
运行后,我想在我的 App_Data 中看到一个数据库文件,但它不存在,并且当我使用 SQL Server 对象资源管理器时,即使我正在尝试执行此操作,也不会创建数据库。
最佳答案
您能否提供 Web.config 中的连接字符串? 另外,是否有一个与您的连接字符串名称相同的数据连接(服务器资源管理器 -> 数据连接)?
我认为,向 DepartmentDb 上下文类添加无参数构造函数可以解决您的问题
public DepartmentDb ()
: base("name=DefaultConnection")
其中 name=DefaultConnection 必须是您的连接字符串名称
关于asp.net-mvc - Entity Framework -更新数据库-不创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21820475/