我想从程序中的edmx或edmx.sqlce文件中以编程方式创建数据库。我在向用户发送数据时阅读了最佳实践,这是最好的方法。但我还没有找到任何东西。或者最好是创建它并将其与程序一起发送出去?如果我这样做,我将如何更新数据库?如何判断数据库的版本?
很抱歉一个中有多个问题。我是编程/数据库的新手,所以我不知道它是如何正常完成的,似乎也找不到它的书。
答案 0 :(得分:3)
此方案中的最佳做法是创建安装包(.msi),它将安装您的应用程序并执行脚本以部署数据库。该脚本甚至可以检查SQL Server CE和.NET Framework等依赖项。这也将解决您的数据库版本问题,因为.msi安装包保留了这些信息,因此您可以创建升级.msi,它将知道它必须只执行数据库的更改脚本而不是创建新的脚本。请注意,创建安装包是相当复杂的任务,但这是在向客户发送的实际产品中完成的方式。在我当前和以前的公司中,我们使用WiX来创建安装包,但我们有特殊的人来做这件事。
没有API可以从EDMX文件创建数据库。此外,EDMX文件不是构建应用程序的一部分。数据库生成是VS2010的特性,它使用工作流程或T4模板将EDMX转换为SQL脚本。默认模板只能创建完整数据库脚本,您必须执行它。
我在separate question中描述了为新版数据库创建部署脚本的方法。它与代码优先(EFv4.1)有关,但原理是相同的。如果您需要保留有关数据库版本的信息,可以为此设置特殊表,并检查升级脚本开头的表中的值。