修复从日期时间转换为 int 后的本地数据库结构



我决定在这个阶段使用int而不是DateTime。我用add-migration创建了一个迁移,但失败了,并说我必须手动运行CONVERT命令。我不懂SQL Server,所以我去了Visual Studio Server Explorer并使用表设计工具将值更改为int并运行Update。它成功了,但是,当我尝试将某些内容保存到我的数据库中时,它会抛出错误:

System.Data.SqlClient.SqlException:"无法删除数据库"AppDbContext",因为它当前正在使用中。

我手动删除了位于App_Data文件夹中的数据库文件并重建了我的应用程序,但发生了相同的错误。当我使用设计工具检查表结构时,它反映了我的更改 - 所需的列现在int而不是DateTime

这是访问数据库的代码:

db.Contests.Add(contest);

Contests确实是我更改的表,但数据库结构似乎没问题。我不明白为什么它会尝试删除数据库。我该如何解决它?

总结

修改表时始终在数据库级别工作 - 我安装并使用了SQL Server Managment Studio,并成功地更改了更改表。

错误

根据我的Cannot drop Database错误,它发生了,因为我的DbInitiallizer类设置为每次更改模型时删除并重新创建数据库。我删除了该设置,而是将其配置为仅在数据库不存在时才创建数据库。之后,我需要做的就是运行迁移,通知EF所有表现在都已修改以反映我的模型并且它有效。

更改表列属性的简单步骤:

  1. 进行所需的模型更改。
  2. 使用SQL Server Management Studio或类似的数据库级工具修改表列
  3. 在 Visual Studio 中的程序包管理器控制台工具中运行add-migration <Name>update-database
  4. 完成:)

相关内容

  • 没有找到相关文章

最新更新