0

我已经建立了一个模型,我制作了一个控制器(并通过代理一些视图,用于查看、创建、删除和编辑表中的记录,每当我第一次通过 Web 浏览器中的控制器浏览到视图时创建的表中) Visual Studio 中的向导。

这按预期工作,但后来我对模型进行了更改,并尝试了以下步骤将更改提交到数据库:

  1. 我删除了控制器
  2. 我删除了包含用于创建/删除/等记录的各种 cshtml 页面的 View 文件夹
  3. 我使用 Visual Studio 中的服务器资源管理器窗格从数据库中删除表
  4. 我根据模型重新创建了控制器(并通过代理各种视图)
  5. 拯救了所有
  6. 我重建了我的解决方案

完成上述操作后,我点击调试,并浏览到我的控制器,期望实体框架重新创建我的表。相反,我收到了这个错误:

无效的对象名称“dbo.FooBar”。// FooBar 是我的模型的名称,因此是我的表

几个问题:

  1. 在控制器/视图/表全部创建之后,提交对模型所做的更改的正确方法是什么,并且可能已经对它们进行了更改。
  2. 我能做些什么来解决我目前的情况?

谢谢

4

1 回答 1

1

您要使用的两个软件包是:

自动迁移 (EFMigrations)

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx

此功能扩展了您的项目,不仅可以首先使用代码,还可以将对模型所做的更改迁移到数据库。自从它退出测试版的那一刻起,我就在生产中使用它。

MVC 脚手架

http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

您可以下载现有的脚手架模板以根据您的模型创建视图。如果您的模型发生变化,这些视图会自动更新。从来没有时间构建我自己的模板,但这里有一篇来自 Scott Hanselman 的博客文章,他展示了如何做到这一点:http ://www.hanselman.com/blog/ModifyingTheDefaultCodeGenerationscaffoldingTemplatesInASPNETMVC.aspx

在 Channel9 上查看 Steve Sanderson(脚手架)和 Scott Hanselman(EF Migrations)的谈话。

于 2012-11-11T22:55:53.097 回答