从DateTime转换到int

时间:2018-02-28 17:05:52

标签: sql-server localdb

我决定在此阶段使用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确实是我改变的表,但数据库结构似乎没问题。我不明白为什么它试图删除数据库。我该如何解决?

1 个答案:

答案 0 :(得分:0)

摘要

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

错误

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

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

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