Sea*_*ham 5 c# database sql-server asp.net-mvc entity-framework
我最近使用 ASP.NET MVC 进行了一个新项目,但我对这项技术并不十分熟悉。我仍处于早期阶段,即将开始自学如何使用实体框架来处理我的数据访问代码。我只是很难确定哪些软件/工具/功能可以做什么,但我认为我在 EF 上走在正确的轨道上。
我正在寻找能够看到我的本地数据库与我的生产数据库(架构,而不是其中的实际数据)中的差异的东西,并且能够将其发布到我们本地网络中的 SQL Server . 在我看来,我认为它就像数据库的 DVCS。
传统上(就像我所说的大多数)我会在我的代码或存储过程等中使用 SQL 编写我自己的数据访问代码,我会自己处理数据库方面的事情。不过,这对我来说不再是一种选择,因为我需要为开发和生产设置单独的环境,而且我真的没有时间也不想再手动编写所有这些代码。开发将位于开发机器的本地,生产将托管在我们本地网络的服务器上。
我最近开始使用 Visual Studio 中的“发布”功能,并且设法将其设置得非常好,将新版本发布到我的 IIS 服务器正在查看的目录中以提供站点。
我使用 Git 和 Sourcetree 来处理我的项目代码的 DVCS,但是我从来没有亲自使用或找到解决方案来为数据库做类似的事情。起初我以为我正在寻找某种适用于 SQL Server 的 DVCS,但并没有得到太多回报。本质上,我只想要某种工具来管理本地和生产数据库之间的版本差异,我认为这是 EF 可以为我做的事情。
对于数据库,我使用的是 SQL Server。我还没有为这个项目建立一个数据库,所以我认为代码优先的 EF 将是最好的方法。我想确保 EF 在 SQL Server 中使用数据库,我相信我可以通过指定要使用的连接字符串而不是 Visual Studio 中的连接字符串来设置。我偶尔需要通过 SSMS 进行数据库访问,因此我可以使用索引和备份计划,而我通常会通过 SSMS 进行这些操作,但我仍然希望 EF 为我完成大部分工作。
本质上,我只想单击“发布”按钮,并将代码和数据库中的所有本地差异发布到生产服务器。
我可以按照我希望的方式使用实体框架实现我的预期目标吗?
这可以通过 EntityFramework 轻松完成。您正在寻找的内容称为“EF 迁移”。EF 迁移会扫描您的 POCO 类以查看它们是否与您的数据库匹配。如果有新的或更改的内容,它将为您更新数据库表。要了解如何使用 EF 迁移,请查看此链接https://msdn.microsoft.com/en-us/data/jj591621.aspx
连接字符串可以通过 Web.Config/App.Config 转换来解析。在发布过程中,Web.Config 转换会自动将开发连接字符串替换为生产连接字符串。要了解如何使用 web.config 转换,请查看此链接http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/web-config-transformations
在发布过程中,您可以告诉 VisualStudio 检查哪些迁移尚未应用到生产数据库,并自动应用这些迁移。本文http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an- asp-net-mvc-application展示了发布到 Windows Azure 时如何应用迁移。
希望能帮助到你!