【发布时间】:2016-11-15 02:51:01
【问题描述】:
我正在将 Code-First 应用到 MS SQL Server 2012 中的现有数据库。我已经完成:右键单击项目 -> 添加项目 -> ADO.net 实体数据模型 -> 数据库中的 Code-First。这样,数据库中的所有表都会导入到我的 Web API 项目中。
然后,在this 博客帖子之后,我跳过了第 1 步和第 2 步,并成功进行了第 3 步。然后在第 4 步,因为我正在做一个新项目,而不是从 Database-First 迁移项目;有人建议我将这个 sn-p 放在我的 DbContext 类的构造函数中,而不是创建一个新类来设置数据库初始化器:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<Migrations.Configuration, WorkflowDbContext>());
这是在我将给定的代码实现到我的 DbContext 类之后:
Partial Public Class DbContext1
Inherits DbContext
Public Sub New()
MyBase.New("name=DbContext1")
Database.SetInitializer(New MigrateDatabaseToLatestVersion(Of Migrations.Configuration, DbContext1))
End Sub
但是当我这样做时,上面代码中的关键字错误,我总结如下:
- SetInitializer:“类型参数 'Configuration' 不继承或实现约束类型 'DbContext'。”
- Migrations.Configuration:“类型参数 'Configuration' 不继承或实现约束类型 'DbContext'。”
- DbContext1:“类型参数 'DbContext1' 不继承或实现约束类型 'DbMigrationsConfiguration(Of Configuration)'。”
现在,我正在修改(添加外键和导航属性)使用 EF 代码优先从数据库自动导入的模型类。这是我现在面临的问题的原因吗?
有人可以向我指出我应该如何解决这些问题吗?
P/S:
- 我的项目中只有一个 DbContext 和一个 Configuration。
- 由于上面的代码还没有工作,我特意跳过了步骤 4 来尝试。我也跳过了第 5 步,因为我的 ConnectionString 已经是 DbContext 类型。所以我继续执行第 6 步。令人惊讶的是,它奏效了!我做了初始添加迁移,现在已经创建了一个“初始”类。但是我很担心如果跳过这些步骤会在以后产生影响。可以?
【问题讨论】:
标签: vb.net asp.net-web-api visual-studio-2015 sql-server-2012 ef-code-first