我正在关注Pluralsight上的MVC4教程,我的所有演示项目都是通过Visual Studio Online进行源代码控制的,目前我只在本地进行测试(未部署到Azure或其他任何东西)。我正在开发一个利用EF5,代码优先模型的ASP.NET MVC4应用程序。我启用了迁移,并创建了以下类,我更新了种子方法并启用了自动迁移。
internal sealed class Configuration : DbMigrationsConfiguration<MyProject.Models.MyProjectContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(MyProject.Models.MyProjectContext context)
{
context.MyCollection.AddOrUpdate(v => v.attr1,
new MyProject() { attr1 = "MVC4", attr2 = 120},
new MyProject() { attr1 = "LINQ", attr2 = 200});
context.SaveChanges();
}
}
我正在使用带有动态数据目录的localDb实例的默认连接字符串(不对路径进行硬编码)。
"AttachDBFilename=|DataDirectory|\MyProject.Models.MyProjectContext.mdf"
在我决定更改解决方案的物理目录之前,一切都按预期工作。我将目录从默认的C:/user/documents/visual studio 2013/projects
文件夹更改为D:/VisualStudio
的另一个存储驱动器。我更新了源代码控制的映射,并将项目下拉到新位置。
然而,当我运行我的项目时,我不再有任何数据。实际上,如果没有收到以下错误消息,我就无法运行update-database
命令:
无法附加文件&#39; D:\ Visual Studio \ MyProject \ MyProject \ App_Data \ MyProject.Models.MyProjectContext.mdf&#39; as database&#39; MyProject.Models.MyProjectContext&#39;。
我尝试关闭自动迁移,重新运行&#34; enable-migrations&#34;命令,并尝试硬编码存储.mdf
文件的路径,但它永远不会&#34;附加&#34;到数据库。我知道数据库不再存在,但是如果我运行update-database -force
命令,如果系统没有找到数据库,它将创建一个新数据库。
有人可以协助我重新获取.mdf
文件夹中的App_Data
文件吗?
保留现有数据不是问题,我只需要有一个新的数据库继续为教程工作。
答案 0 :(得分:2)
您可以尝试多种选项,应用程序应该可以再次运行。
选项1
在web.config文件中重命名数据库名称,然后再次运行Update-Database
。
选项2
从web.config文件中删除以下行,然后再次运行Update-Database
。
AttachDbFilename=|DataDirectory|DataContext.mdf
选项3
由于您已启用迁移,因此请从服务器资源管理器中删除数据库,并从应用程序中的app_data
文件夹中的Object explorer和.mdf文件中删除该数据库。然后再次运行Update-Database
。
我相信所有这些选项都应该可以运作