asp.net-mvc - Entity Framework -更新数据库-不创建数据库

标签 asp.net-mvc entity-framework-5

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/

相关文章:

c# - 是否可以创建自定义 ASP.NET MVC 强类型 HTML Helper?

c# - 接受 5 个字符的正则表达式,可选

.net - 如何在数据库优先方法中进行迁移

c# - 无法使用 LINQ OrderBy 中的属性名称进行排序

c# - Moq 和 nUnit 测试 Entity Framework MVC 3 C#

c# - 使用数据注释限制 DateTime 值

c# - 如何检查我的 SQL Server Express 数据库是否超过 10 GB 的大小限制?

vb.net - EF 5.0 - 无法使双向关系与 Code First 一起使用

c# - WebSecurity.CreateUserAndAccount "Field does not exist"

c# - ASP.NET MVC : Get lowercase links (instead of Camel Case)