将模型的更改提交到数据库

时间:2012-11-11 20:31:34

标签: c# asp.net-mvc entity-framework ef-code-first

我已经构建了一个模型,我创建了一个控制器(并且代理了许多视图,用于查看,创建,删除和编辑在我第一次通过Web浏览器中的控制器浏览视图时创建的表中的记录)在Visual Studio中使用向导。

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

  1. 我删除了控制器
  2. 我删除了包含用于创建/删除/ etc记录的各种cshtml页面的View文件夹
  3. 我使用Visual Studio中的服务器资源管理器窗格从数据库中删除表
  4. 我根据模型(以及代理各种视图)重新创建控制器
  5. 全部保存
  6. 我重建了我的解决方案
  7. 执行上述操作后,我点击调试,浏览到我的控制器,期望实体框架重新创建我的表。相反,我得到了这个错误:

      

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

    几个问题:

    1. 在创建控制器/视图/表之后提交对模型所做的更改的正确方法是什么,并且可能已对它们进行了更改。
    2. 我该怎样做才能解决目前的状况?
    3. 由于

1 个答案:

答案 0 :(得分: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上查看史蒂夫桑德森(脚手架)和斯科特汉塞尔曼(EF移民)的谈话。