从DateTime转换为int后修复LocalDB数据库结构

问题描述 投票:0回答:1

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

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

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

这是访问数据库的代码:

db.Contests.Add(contest);

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

sql-server localdb
1个回答
0
投票

Summary

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

Error

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

Simple steps to change table column property:

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