database - 以编程方式从 edmx 实体 3.5 文件创建数据库

标签 database vb.net entity-framework sql-server-ce

我想从我项目中的 edmx 或 edmx.sqlce 文件以编程方式创建数据库。我在将数据发送给用户时阅读了最佳实践,这是最好的方法。但我还没有在上面找到任何东西。还是最好创建它并与程序一起发送?如果这样做,我将如何更新数据库?如何判断数据库是哪个版本?

很抱歉将多个问题合二为一。我是编程/数据库的新手,所以我不知道它通常是如何完成的,而且似乎也找不到关于它的书。

最佳答案

此方案中的最佳做法是创建安装包 (.msi),它将安装您的应用程序并执行脚本来部署数据库。该脚本甚至可以检查 SQL Server CE 和 .NET Framework 等依赖项。这也将解决您的数据库版本问题,因为 .msi 安装包保留此信息,因此您可以创建升级 .msi,它将知道它必须只执行数据库的更改脚本而不是创建新脚本。请注意,创建安装包是一项非常复杂的任务,但这是交付给客户的实际产品的完成方式。在我现在和以前的公司中,我们都使用 WiX创建安装包,但我们有专门的人来做这件事。

没有从 EDMX 文件创建数据库的 API。此外,EDMX 文件不是构建应用程序的一部分。数据库生成是 VS2010 的功能,它使用工作流或 T4 模板将 EDMX 转换为 SQL 脚本。默认模板只能创建完整的数据库脚本,您必须执行它。

我在separate question中描述了为新版本数据库创建部署脚本的方法。 .它与代码优先(EFv4.1)相关,但原理相同。如果您需要保留有关数据库版本的信息,您可以为此创建一个特殊的表,并在升级脚本的开头检查表中的值。

关于database - 以编程方式从 edmx 实体 3.5 文件创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5916891/

相关文章:

mysql - 将触发器添加到我的 H2 数据库中的每个表

sql - SQL 中 WHERE 子句的索引性能

mysql - vb.net 的字典中不存在给定的键

mysql - Hibernate和spring mvc中实体的双向映射

linq-to-sql - L2S(LINQ to SQL)或 EF( Entity Framework )

c# - 如何在不包含/加载整个集合的情况下获取 Entity Framework 模型中列表的计数?

database - 有没有办法审计对数据库执行的任何操作?

database - Cakephp:如何读取 session 中的用户数据?

asp.net - 通过 QueryString 传递对象

vb.net - 在 GetReponse() 上获取 "The underlying connection was closed: An unexpected error occurred on a send"但不是通过浏览器获取