0

我打算使用代码优先的方法使用 ASP.NET MVC4 创建一个 Web 应用程序。

我正在使用 Visual Studio 2012 并且我有 SQL Server 2012。我想做的是以我可以使用 SQL Server 而不是默认的 SQL Express 或 localDB 的方式设置解决方案。如果对模型进行了任何更改,我希望解决方案重新生成数据库,并在发生这种情况时使用一些测试数据为数据库播种。

我浏览了一堆教程,它们似乎都在使用 SQL Express 或 LocalDB 数据库。我能够在第一次运行 SQL Server 时获得在 SQL Server 上生成数据库的解决方案,但是在我对模型进行更改之后,例如将模式名称从“dbo”更改为“测试”或更改表名,它似乎没有接受这些变化。

谁能给我一些关于我如何能够做到这一点的见解?

谢谢

4

1 回答 1

1

您需要做的就是让 web.config 中的连接字符串指向您的 SQL 服务器,以便它使用该服务器实例。

至于让它更新模型更改,请查看DropCreateDatabaseIfModelChanges. 在您的 Global.asax 中,您可以像这样设置数据库初始化程序

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContext>());

你也需要一个 using 语句

using System.Data.Entity;

Scott Allen 有一个免费的 MVC4 视频指南,它可以为您提供有关迁移和 Code First 的更多信息(这就是您要询问的内容)。视频指南的第 4 部分有一个 13 分钟的数据迁移部分,这是一个完整的演练。如果您可以抽出时间,请观看以获取完整的详细指南。http://www.asp.net/mvc/videos/pluralsight-building-applications-with-aspnet-mvc-4

我可能会指出这仅在开发中有用,并且无法使其在生产中工作,因为您会丢失数据。如果您需要适合生产环境的东西,请查看 SSDT(SQL Server Data Tools)。您可以将数据库作为解决方案中的 SQL 项目进行管理,并使用 DACPAC 文件部署更新。该文件管理生产中的所有更新,并且可以设置为防止数据丢失。您可以从您的项目中更改和部署您的 Db,并且仍然将 EF 与数据库优先和 EF 模型等一起使用。您所做的就是在 Db 项目中进行更改并点击调试以更新您的测试 Db。发布时,您可以选择导出 DACPAC 以进行实时更新。

于 2013-05-26T18:27:47.960 回答