我决定在此阶段使用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
确实是我改变的表,但数据库结构似乎没问题。我不明白为什么它试图删除数据库。我该如何解决?
答案 0 :(得分:0)
在修改表时始终在数据库级别工作 - 我安装并使用了SQL Server Managment Studio并且已成功更改了表格。
根据我的Cannot drop Database
错误,它发生了,因为我的DbInitiallizer
类被设置为删除并在每次更改模型时重新创建数据库。我删除了该设置,并将其配置为仅在数据库不存在时才创建数据库。之后我需要做的就是运行迁移,通知EF
所有表现在都被修改以反映我的模型并且它有效。
add-migration <Name>
和update-database