gpt4 book ai didi

c# - EF6 数据库优先 - EF 尝试创建我的数据库(但所有表都已存在)

转载 作者:行者123 更新时间:2023-11-30 14:53:36 26 4
gpt4 key购买 nike

好吧,我是如何来到这里的。我正在重建一个旧的 MVC3 站点。我最近有一个 Database First MVC5 EF6 项目,其中包含我想要使用的相同 UI 包。我复制了现有的项目并从中删除了几乎所有内容(所有项目特定的 POCO 模型、DbContext、 View 等)基本上我只是将新的 Identity 内容与我的 UI 框架一起留在了那里。

我创建了脚本来手动将我的数据库从 SQLMembership 转换为 Identity 2.0(以及一些用于密码转换的代码)。一切顺利,编译成功,我可以以现有用户身份登录。

下一步,我创建了一个新的临时项目(我不想弄乱实际的项目命名空间),从新数据库为所有现有表生成 POCO 模型,将它们复制到我的项目中,然后手动编写 DataModel Fluent API 代码。我在模型生成时遇到了一些验证错误,但我没有解决。但是现在我在尝试执行任何会访问 __MigrationHistory 已经存在的 DataModel 时遇到异常错误。

查看 EF SQL 调试输出的进一步调查显示它正在尝试运行脚本以在我的数据库中创建所有表,它最终在尝试创建 __MigrationHistory 表时抛出错误,因为它已经存在(尽管我应该注意它没有记录)。

那么我有什么不同之处呢? EF 怎么知道不在我的其他项目中尝试这样做,它运行良好,并且在数据模型结构和 POCO 模型结构方面与我的新项目相同?我应该怎么做才能解决它?我知道我可以制作自己的初始化程序 ( How can I disable the use of the __MigrationHistory table in Entity Framework 4.3 Code First? ),但我更愿意了解正在发生的事情并在源代码处进行修复,而不是围绕它编写代码。

最佳答案

删除项目中现有的 Migrations 文件夹。从现有数据库中删除表“__MigrationHistory”。现在你可以重建这个历史表:

PM> enable-migrations
PM> add-migration Initial -IgnoreChanges
PM> update-database

-IgnoreChanges 创建空的 Up() 方法并且不对现有对象进行任何更改。

关于c# - EF6 数据库优先 - EF 尝试创建我的数据库(但所有表都已存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28824008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com