You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Entity Framework数据库优先代码创建SQL Server数据库及恢复误删库?

关于Entity Framework数据库优先及数据库恢复的解答

嘿,针对你的两个问题,我来一步步给你讲清楚:

一、用Entity Framework数据库优先方式创建SQL Server数据库

先澄清个小概念:数据库优先(Database-First)的常规流程是先有SQL Server数据库,再基于它生成EF模型。但如果你已经有了通过数据库优先生成的EDM(实体数据模型)代码,想要反向创建对应的数据库,这完全可行,有两种常用方法:

方法1:借助EF迁移功能快速创建

  1. 打开Visual Studio 2017的包管理器控制台(Package Manager Console),先启用迁移:
    • 执行命令:Enable-Migrations -EnableAutomaticMigrations
    • 这会在项目里生成Migrations文件夹和相关配置文件
  2. 创建初始迁移脚本:
    • 执行:Add-Migration InitialCreate -IgnoreChanges
    • 这个命令会生成一个初始迁移,跳过当前模型和空数据库的差异检测(毕竟现在数据库还不存在)
  3. 执行迁移创建数据库:
    • 敲命令:Update-Database
    • EF会自动读取你项目里的数据库连接字符串,连接到指定的SQL Server实例,创建对应的数据库和所有表结构

方法2:生成SQL脚本手动执行

  1. 打开你的EDM设计器(就是那个.edmx文件)
  2. 在设计器空白处右键,选择生成数据库脚本来自模型...
  3. 跟着向导走,选择目标SQL Server的连接信息,EF会自动生成完整的建库、建表SQL脚本
  4. 把脚本复制到SQL Server Management Studio(SSMS)里执行,数据库就建好了

二、用已有的EDM代码恢复误删的数据库

当然可以!你手里的EDM代码(包括.edmx模型、实体类、DbContext)已经包含了完整的数据库结构信息,完全能用来重建数据库,步骤和上面创建数据库的方法一样:

  1. 先确认项目里的数据库连接字符串是对的——要指向你原来的SQL Server实例,数据库名称填你误删的那个
  2. 如果用迁移:直接在包管理器控制台执行Update-Database,EF会发现数据库不存在,自动根据模型重建整个库的结构
  3. 如果用脚本:打开.edmx生成SQL脚本,在SSMS里执行就行

划重点:这种方法只能恢复数据库的表、列、约束等结构,如果原来的数据库里有数据,那数据是找不回来的(除非你有单独的数据备份)。但表结构能100%通过EDM模型恢复。

内容的提问来源于stack exchange,提问作者Danish Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:12:00