【发布时间】:2010-06-09 20:44:13
【问题描述】:
我正在使用 .Net Framework 4.0。我有一个实体模型 (.edmx),我的程序中有一个菜单选项,用于连接到现有数据库或创建新数据库。当用户选择创建新数据库时,我想从实体模型中生成数据库和模式。知道该怎么做吗?
【问题讨论】:
标签: c# sql-server database ado.net-entity-data-model
我正在使用 .Net Framework 4.0。我有一个实体模型 (.edmx),我的程序中有一个菜单选项,用于连接到现有数据库或创建新数据库。当用户选择创建新数据库时,我想从实体模型中生成数据库和模式。知道该怎么做吗?
【问题讨论】:
标签: c# sql-server database ado.net-entity-data-model
不要这样做。它仅适用于您的 v1 产品,一旦您计划发布 v1.1,您就会意识到您无法将现有部署的数据库升级到新架构。
相反,使用脚本来创建所有对象(包括索引、关系、约束等所有内容)并使用升级脚本来控制如何将每个架构版本升级到下一个版本,如Version Control and your Database 中所述。
较弱的替代方法是在您的解决方案中使用 Visual Studio 数据库项目,因为 VSDB 项目具有升级功能,尽管基于差异。它们允许您使用vsdbcmd 工具部署 .dbschema 文件,并且此工具可以区分和升级现有模式。您可以通过构建转换步骤将 VSDB 项目输出转换为 EF 模型(这不是微不足道的,但可能)。
总体而言,不要被 EF(或 Linq)建模作为架构的主定义的诱惑。你以后会付出更大的代价。
【讨论】: