EF下的Code First编程,卸载程序如何还原数据库?

问题描述

各位老大。我最近写了一个基于EF的Web系统,正在写自动安装和卸载部分的代码。在卸载程序中,我需要还原数据库(也就是将数据库中已安装的数据表等全部删除,还原到安装前的状态)。由于数据库中可能还有其他的数据表(比如一个数据库可能安装有多套WEB系统等),因此不能简单以删除数据库的方式来做。我看DbMigrator类没有卸载类的方法。请问如何做?谢谢!!1

解决方案

解决方案二:
能不能自己写一个sql脚本,卸载时调用这个脚本,删除ef的相关表?
解决方案三:
引用1楼hanjun0612的回复:

能不能自己写一个sql脚本,卸载时调用这个脚本,删除ef的相关表?

我用的codefirst方式编程,没写SQL教本。如果要写SQL教本的话,每次模型变化后,我都得更新卸载SQL教本,肯定会很麻烦。我想得是EF有没有什么我不知道的方法,可以直接调用来还原数据库,谢谢。
解决方案四:
哦哦,也有道理。不过我也不知道有没有还原数据库的方法。
解决方案五:
各位老大,来指点一下迷津晒。
解决方案六:
直接的方法,没用过,去微软网站好好看看我觉得既然是自己写安装、卸载程序,安装的时候就要记下装进去的东西(如写到一个数据库的表Table),包括文件、数据库表、注册表值等,卸载的时候访问Table,删去。我估计你是MVC+EF的,其实建立EF后,会在web.config里有了一个连接名,你可以根据这个连接名建立sqlconnection,自己写sql语句,在controller里执行,完全可以删除drop你安装的表
解决方案七:
引用5楼From_TaiWan的回复:

直接的方法,没用过,去微软网站好好看看我觉得既然是自己写安装、卸载程序,安装的时候就要记下装进去的东西(如写到一个数据库的表Table),包括文件、数据库表、注册表值等,卸载的时候访问Table,删去。我估计你是MVC+EF的,其实建立EF后,会在web.config里有了一个连接名,你可以根据这个连接名建立sqlconnection,自己写sql语句,在controller里执行,完全可以删除drop你安装的表

关键表有可能还有外键,对于有外键的数据表,直接drop会报错的,有没有谁做过类似的?谢谢、

时间: 2024-11-08 19:34:49

EF下的Code First编程,卸载程序如何还原数据库?的相关文章

编程实现备份和还原数据库

备份|编程|数据|数据库  注意,下面备份还原都是用存储过程实现! if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_backupdb]GO /*--备份数据库的通用存储过程 --邹建 2003.10--*/ /*--调用示例 --备份当前数据库e

C++程序设计实践学材系列(10)——1.2.2 在Code::Blocks下编辑、运行第一个程序

回到系列文章的目录--[系列文章目录] 回到本章目录--[第1章目录] 1.2.2 在Code::Blocks下编辑.运行第一个程序 初学编程,第一个.每一次.第一步很多,享受这个全新的世界. 要编辑.运行程序C++程序,启动Code::Blocks,首先要建立一个C++项目.Code::Blocks可以做很多的事情,作为编程的初学者,从完成控制台应用(Console application)开始学编程. 现在,请下载并学习"微课件1.2 编辑.运行第一个程序". 下载:微课件1.2 

Aura下如何安装或卸载程序

  操作步骤: 如何下载安装程序: 在桌面找到"Aura"图标; 左键双击打开后,即可看到下面的界面,然后找到"乐商店"打开应用商店; 打开后我们可以看到,在左右各有三个选项.左侧的三个选项为下载程序的分类; 找到自己需要的程序后,点击直接选择"下载"即可; 如果需要搜索某程序,可以在右侧选择"搜索",输入要搜索的名称即可. 如何卸载程序: 点击右侧的"应用管理",打开后左侧是已安装的程序,右侧为正在下载程

Aura下如何安装或卸载程序?Aura安装或卸载程序

在桌面找到"Aura"图标:     左键双击打开后,即可看到下面的界面,然后找到"乐商店"打开应用商店:     打开后我们可以看到,在左右各有三个选项.左侧的三个选项为下载程序的分类:     找到自己需要的程序后,点击直接选择"下载"即可:     如果需要搜索某程序,可以在右侧选择"搜索",输入要搜索的名称即可.     如何卸载程序:   点击右侧的"应用管理",打开后左侧是已安装的程序,右侧为正

linux下C语言多线程编程实例

linux下C语言多线程编程实例 学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵. 下面先来一个实例.我们通过创建两个线程来实现对一个数的递加. 或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉. 下面是我们的代码: /*thread_example.c : c multiple thread programming in linux *author : falcon *E-mail : tunzhj03@st.lzu.edu.cn

linux 下为什么不用IDE编程?

问题描述 linux 下为什么不用IDE编程? 很多前辈都是用vi编辑器+gdb调试器+gcc编译器编程,linux下也有如code blocks的编译器,也很方便,为什么仍用上述组合?有什么优势? 解决方案 很多linux服务程序,都不是在本地编辑并编译,而是通过远程到服务器上进行编辑源代码并编译的.这时候一般都会用telnet/ssh而很少用x,因此无法使用IDE. 解决方案二: 习惯罢了,Linux下大家都欢喜命令行,而不是 IDE. 解决方案三: Linux主要用作服务器,服务器一般不用

Win8怎么卸载程序

  Win8卸载程序的方法其实相比Win7系统可以说更方便简洁,不仅可以去传统的卸载程序界面卸载,还可以在Win8开始屏幕(Metro界面)里面卸载,甚至在开始程序的自带卸载程序工具里找(此步骤需要先找回Win8开始菜单),下面一起来详细介绍下. 首先介绍最传统的卸载程序方法,也就是进入控制面板,找到"程序和功能"进入即可看到已经安装的程序,双击卸载即可,如下图所示: 另外还可以在Win8的开始屏幕(Metro界面)中选择卸载程序,方法是先选择需要卸载的程序,点击底部的卸载即可,如下图

如何在Windows 2000下手工将Oracle完全卸载

oracle|window 如何在Windows 2000下手工将Oracle完全卸载?系统环境: 1.操作系统:Windows 2000 Server,机器内存256M2.数据库: Oracle920for NT 企业版3.安装路径:D:\ORACLE卸载步骤: 1.开始->设置->控制面板->管理工具->服务 停止所有Oracle服务.2.开始->程序->Oracle - OraHome81->Oracle Installation Products->

Delphi下汉字输入法的编程及使用

许多Windows应用程序的中西文录入界面中,中西文的录入需要反复切换汉字输入法,这样使用起来非常麻烦,下面来介绍一种比较简便的解决方法.本文的程序设计环境为Delphi Client/Server Suit Ver 3.0(以下简称Delphi 3.0)和中文Windows 95. 1.Delphi下的Imename.Imemode属性 在Delphi 3.0中的Tedit.Tmemo.TmaskEdit等编辑元件在应用程序中经常使用,这三种元件都具有ImeName.ImeMode属性.其中I