- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在Visual Studio 2015中使用Code-First进行数据库迁移。在此过程中,我已经完成了迁移步骤,直到Add-Migration为止。
添加迁移之后,我添加了这一行代码
Database.SetInitializer(New MigrateDatabaseToLatestVersion(Of DbContext1, Migrations.Configuration))
"Add-Migration initial -Force"
"Update-Database"
Add-Migration Initial -IgnoreChanges
Update-Database -verbose
最佳答案
为了能够解决问题,您应该了解EF如何处理连接字符串以及迁移的工作方式。
EF如何处理连接字符串:通常,您的DbContext
具有无参数构造函数,该构造函数使用硬编码的连接字符串名称调用其基类构造函数。您的项目app.config
或web.config
文件应包含connectionStrings
部分,该部分定义具有该名称的连接字符串。当您未明确向Package Manager控制台命令提供连接字符串参数时,这是项目中使用的默认连接字符串。
连接字符串名称为MyConnectionStringName
的一些示例代码:
public class MyDbContext : DbContext
{
public MyDbContext() : base("MyConnectionStringName") { ... }
...
}
.config
文件中:
<configuration>
...
<connectionStrings>
<add name="MyConnectionStringName" connectionString="..." />
</connectionStrings>
</configuration>
Update-Database
提供正确的连接字符串作为参数,如下所示:
Update-Database -ConnectionString <your connection string here> -ConnectionProviderName System.Data.SqlClient
.config
文件中定义的任何连接字符串名称:
Update-Database -ConnectionStringName MyConnectionStringName
Add-Migration
时,通常会在项目内部的一个名为
Migrations
的文件夹中生成/更新代码文件。迁移文件的名称由其生成的时间戳和运行
Add-Migration
时使用的名称组成。您可以检查那些文件的内容,并查看运行
Add-Migration
的效果。您也可以在生成它们后对其进行修改,并添加自己的代码,尽管目前您无需这样做。
Initial
迁移开始,每次更改模型代码时,都会生成一个新的迁移文件。该数据库包含一个名为
__MigrationsHistory
的表,该表可跟踪数据库中已运行的迁移。
Up
和方法
Down
。运行
Update-Database
时,总是有两个隐式参数:
SourceMigration
和
TargetMigration
。 EF以增量方式应用
Up
和
SourceMigration
之间的所有迁移的
TargetMigration
方法(如果要降级数据库,则使用
Down
方法)。当您不指定
SourceMigration
和
TargetMigration
参数时,默认方案是
SourceMigration
是应用于数据库的最后一次迁移,而
TargetMigration
是挂起的最后一个迁移。 EF通过查询项目默认数据库的
__MigrationsHistory
表来确定这些参数,因此,如果该数据库处于不一致状态,则可能会错误地生成迁移。我认为这是导致您出现问题的原因。
Update-Database
时,EF都会根据数据库的状态查看
__MigrationsHistory
表以了解必须运行哪些迁移,并且在执行迁移的SQL之后,每个表都会在该表中插入一条新记录。应用的迁移。
__MigrationsHistory
内容有时被弄乱了。在运行
Update-Database
和
Add-Migrations
而不遵循正确的顺序并使用
-force
参数时,会发生这种情况。
Initial
生成新的干净的
Add-Migration Initial
迁移,使用
Update-Database
仅运行一次。从那时起,每次更改模型代码时,都会使用
Add Migration YourNewMigrationName
生成新的增量迁移,每次使用不同的名称,并通过运行
Update-Database
一次应用新迁移。
Initial
迁移,并在模型代码更改时通过执行
Add-Migrations Initial -force
对其进行更新。
-force
参数确保现有的
Initial
迁移文件将被覆盖,而不是生成新的迁移文件。这种方法在开发阶段很方便,但是在生产中通常不是一个好方法,因为您可能希望在每次部署新版本的代码时逐步运行数据库更新(您可能无法删除数据库)并再次创建它,并且您还需要维护数据并确保在更新数据库时没有数据丢失。
Update-Database
时,迁移将转换为对数据库执行的SQL。如果要查看为特定迁移生成的确切SQL,可以运行
Update-Database -Script -SourceMigration SomeMigration -TargetMigration SomeOtherMigration
。该命令不会修改数据库,只会生成并显示将在实际
Update-Database
执行中应用的SQL。
关于vb.net - 使用Code-First进行Update-Database时出错:“数据库中已经存在一个名为'something'的对象。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40606167/
我们使用 Azure 弹性池,生成多个客户端数据库和一个引用客户端数据库的主数据库。 我们已经拥有多个数据库,并且正在开发新版本的代码。我们使用 EF6 代码优先。当我们对模型进行更改(添加属性)时,
我们使用 Azure 弹性池,生成多个客户端数据库和一个引用客户端数据库的主数据库。 我们已经拥有多个数据库,并且正在开发新版本的代码。我们使用 EF6 代码优先。当我们对模型进行更改(添加属性)时,
我希望将一些信息分发到不同的机器上,以便在没有任何网络开销的情况下实现高效和极快的访问。数据存在于关系模式中,实体之间的关系是“加入”的要求,但根本不是写入数据库的要求(它会离线生成)。 我非常相信
我使用 GrapheneDB 来托管我的 neo4j 数据库 (db)。 问题 我有 N客户并且正在寻找自动分离他们的内容(他们独特的数据库)的方法,以便: 它不重叠数据 操作速度不受影响。 选项 1
当服务器开始工作(Tomcat)时,日志显示此错误: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid b
我在 Oracle 数据库实例中按以下方式创建了一个触发器。 CREATE OR REPLACE TRIGGER after_logon_on_database AFTER LOGON ON DATA
原谅我的无知,我是数据库约定的初学者。 这是我的 SQLite 代码:(由我的数据库浏览器自动生成) CREATE TABLE `ResearchItems` ( `ID` INTEGER NO
是的是的是的,我已经在整个互联网上搜索过这个问题。一些结果发现,甚至来自 Stackoverflow。但是他们中的大多数人说“你应该自动加载数据库”,或者“parent::__construct();
我正在创建一个 Mac 应用程序,它将一些数据保存到 SQLite 数据库中。问题是:当我关闭数据库并再次打开时,数据不存在了。这是我的代码: NSString *sql = [NSString st
我正在建立一个网站,我打算发布各种帖子,比如教程、文章等。我打算用 php 来管理它,但是当涉及到存储每个帖子的内容时,将要显示的文本,更好的选择是:使用单独的文本文件还是将其添加为数据库中的每个条目
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
对不起,这个关键字对我来说没有任何意义...有人可以给我一个定义吗? 提前致谢... 最佳答案 这是一个品牌。 http://pervasive.com/这是他们的数据库产品的链接 http://ww
我已经在 docker 版本 1.10.1 的 docker 镜像中安装了 PostgreSQL 9.4.6。根据这张官方图片: https://github.com/docker-library/p
当我的 android 应用程序尝试读取 android 短信数据库时,我遇到了这个崩溃。读取android短信数据库的代码类似于下面的代码 fragment : String SMS_URI = "
我有一个 public kit repo,我推送了 v1.0.3 并具有以下结构 go -database --database.go --go.mod --go.sum 我需要它 require g
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我们正在使用MySQL数据库在Go中创建一个Web应用程序。我们的用户一次只能拥有一个活跃的客户端。就像Spotify一样,您一次只能在一台设备上听音乐。为此,我制作了一个映射,将用户ID和作为其值的
我已经尝试在 PostgreSQL 中创建数据库好几天了,遇到了几个问题,但似乎卡住了。 我在 PostgreSQL 中手动创建了一个名为 postgres_development 的数据库,因为 b
我正在创建一个 iMessage 应用程序,它需要连接到与我的常规应用程序相同的数据库。 我调用 FirebaseApp.configure() 并对用户进行身份验证,但出于某种原因,在所有 Data
就像std::unordered_map但所有数据都应存储在磁盘上而不是内存中。 按照我的理解,应该做两部分:索引和存储。我已经学习了一些关于索引的数据结构,比如 Linear-Hash 或 B-Tr
我是一名优秀的程序员,十分优秀!