在服务器中使用 Entity Framework 的 Migration 更新数据库

在开发环境中,每次我们对要对数据库进行更改,比如增加修改表字段等。改好Entity类后,我们只需在Nuget程序包管理控制台运行 update-database 脚本却可:

update-database

Entity Framework提供的这个Migration功能非常方便,基本上不用再打开Sql Server Management Studio了。那么如何在发布环境(服务器)中同步我们对数据库的修改呢?

一种方法是在运行 update-database 脚本加上 -verbose 或 -script 参数:

update-database -script

这样每次都会生成SQL脚本,把生成的SQL脚本Copy下来,然后再到服务器上去执行即可。

但这样非常不方便,万一中间有一次我在本地执行了而忘了在服务上运行相应的SQL脚本呢?这带来的麻烦不可想像。

我们有更好的办法,就是在服务器上也和本地一样执行 update-database。

具体做法如下:

把 /packages/EntityFramework6.1.3/tools/migrate.exe 文件拷贝到服务器发布环境的bin目录下。

将以下 cmd 命令另存为 migrate.bat 文件:

migrate.exe Example.EF.dll /startupConfigurationFile="..\web.config"
pause

Exmaple.EF.dll 是你编写Entity Framework Migration的工程的dll。

migrate.exe 也可以不放在bin目录,你可以使用单独创建一个文件夹(如tools)来存放,但需要把 EntityFramework.dll 和 EntityFramework.SqlServer.dll 也放入此文件夹。另外,命令行还要指定参数 /startUpDirectory:"bin完整目录",并且 /startupConfigurationFile 参数也要提供完整的 web.config 路径。

这样每次发布程序只需运行此bat文件即可,非常方便,而且能保证服务器的数据库本版始终和本地同步。

时间: 2024-10-25 01:57:18

在服务器中使用 Entity Framework 的 Migration 更新数据库的相关文章

如何在ASP.NET Core中应用Entity Framework

注:本文提到的代码示例下载地址> How to using Entity Framework DB first in ASP.NET Core 如何在ASP.NET Core中应用Entity Framework 首先为大家提醒一点,.NET Core和经典.NET Framework的Library是不通用的,包括Entity Framework! 哪怎么办? 别急,微软为.NET Core发布了.NET Core版本的Entity Framework,具体配置方法与经典.NET Framew

在Oracle中使用Entity Framework 6 CodeFirst

项目中需要将系统从SQLServer数据库迁移到Oracle上.由于原大部分数据访问操作都是通过包装了Entity Framework的统一访问入口实现的,所以需要研究Entity Framework从SQLServer转移到Oracle的实现方式. 自从EF4.X起,Oracle就为EF提供了驱动支持,但是很可惜的是不支持CodeFirst模式.庆幸的是从ODP.NET 11.2.0.3.0开始,Oracle官方提供了支持CodeFirst的纯托管代码的EF驱动.但是有以下几点是需要知道的;

Oracle中使用Entity Framework 6.x Code-First

Oracle中使用Entity Framework 6.x Code-First方式开发 去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下Oracle官网,发现EF6.X已经支持了,并且给出了二篇教程(英文版): 1.Using NuGet to Install and Configure Oracle Data Provider for .NET 2.Entity Framework Code First and Code First

爆料:为什么Entity Framework不能进行跨数据库查询

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在上篇随笔中提到"对于跨数据库查询,我们没有找到通过LINQ to Entities实现的方法".后来仔细想想,从理论来讲,实现跨数据库查询应该不难啊,与非跨数据库查询相比,只是多了个数据库名,比如下面的非跨数据库查询语句: SELE

查找当前数据库服务器中某张表存在于哪个数据库中

1 -- 2 --查找当前数据库服务器中某张表存在于哪个数据库中,sqlserver2008测试通过 3 -- 4 declare @tableName varchar(50) 5 --这里设置要查询的表名字 6 set @tableName='Products' 7 8 --清理临时表 9 if object_id('tempdb..#tmpdbs') is not null Begin 10 drop table #tmpdbs 11 End 12 if object_id('tempdb.

[UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)

前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Entity Framework Core(Entity Framework 7)下文将简称:EF 1.在UWP中使用EF需要更新Microsoft.NETCore.UniversalWindowsPlatform到大于“5.2.2”的版本. 2.直接在“程序包管理器控制台”输入命令来更新:Update-P

ASP.NET MVC+Entity Framework 4.1访问数据库

Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.net mvc数据访问 2.传统模式,先创建数据库和表,配置连接字符串,再生成模型 第一种情况的步骤: (1)使用空模板,创建ASP.NET MVC3.0(或4.0)项目,假定项目名:MVC_Student 注意:创建完项目后,项目会自动引用EF4.1 (2)在Model文件夹下,创建数据库上下文类:

让EF飞一会儿:如何用Entity Framework 6 连接Sqlite数据库

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.

MVC5 Entity Framework学习之更新相关数据

在上篇文章中学习了如何在页面中显示相关数据,本节中将学习如何对相关数据进行更新.对于大多数实体关系,可以通过更新外键或导航属性来更新数据,对于多对多关系,Entity Framework不会直接公开连接表,所以你需要通过相应的导航属性来添加和移除实体. 先看完成后的效果图 为Courses自定义Create 和Edit 页面 当一个新的course实体被创建时,该实体必须关联到一个已存在的department.要做到这一点,生成的框架代码应该要包括控制器方法和用于选择department的下列列