sql-server - 为什么我的代码优先 ASP.NET MVC 应用程序突然无法工作,只是因为我从另一个位置打开它?
问题描述
我有一个代码优先的 ASP.NET MVC 应用程序,它运行平稳,能够从 SQL Server 访问数据,直到我将项目复制到另一个位置并从那里打开它。
我收到以下错误:
System.Data.DataException
HResult=0x80131501
Message=初始化数据库时发生异常。有关详细信息,请参阅 InnerException。
来源=堆栈跟踪:
内部异常 1:
EntityException:基础提供程序在打开时失败。内部异常 2:
SqlException:数据库 'C:\Users\BICHE\Desktop\FinalCSharpChallenge\FinalCSharpChallenge\App_Data\StudentContextDB.mdf' 已经存在。选择不同的数据库名称。
无法将文件“C:\Users\BICHE\Desktop\MY REPOS3\The-Tech-Academy-C-Coding-Project\FinalCSharpChallenge\FinalCSharpChallenge\App_Data\StudentContextDB.mdf”附加为数据库“StudentContextDB”。
我的问题是:为什么会因为我将项目从桌面移动到计算机上的另一个位置而发生这种情况?
这可以通过制作一个“if”语句来解决,该语句继续使用StudentContextDB
if 它是否存在,如果它不存在则创建它?(我的导师建议这个,所以我想我会先试试这个)
最后,如果这是正确的解决方案,那么该特定语句的语法是什么?我看到了 Drop and Create 的说明,但没有看到 Use 或 Create 的说明。
我感谢人们对这个问题的任何见解!
解决方案
这里的简短版本是 db 服务器仍然具有对数据库旧位置的引用。您移动它并尝试启动应用程序并指向具有相同名称的数据库的新位置。数据库服务器不知道如何处理。最好将数据库与数据库服务器分离,然后移动文件。
推荐阅读
- graphics - 如何在 Three.js 中拉伸几何,使其边界框精确地适合屏幕
- laravel - 如何在模型中显示隐藏列?laravel 雄辩
- android - 如何从已安装的应用程序中提取源代码?
- algorithm - Raft算法中的增量项?
- c# - 在 C# 中,如何访问包含在“对象”类型中的匿名类型项的字典
- reactjs - 无法启动 MongoDB 服务器“react-scripts”未被识别为内部或外部命令
- ionic4 - Ionic 4 监控剪贴板更改
- extjs - List 的 PullRefresh 插件无法处理 ChainedStore 的可能性
- python - 在列表中搜索关键字并创建新列表
- google-bigquery - 更新 bigquery 表/视图的标签