我正在对我的Build服务器和Dev Server上完全相同的二进制文件运行一些单元测试。我的一些测试写入数据库,因此当我签入时,如果需要,数据库将由EF重建。这已经好几个月了。今天我们注意到,当我们在Dev中启动App时,EF再次尝试重建数据库。经过一些调查后,我意识到Build框上的DB拆卸和重建正在创建一个带有一个哈希的数据库,而从Dev服务器重建数据库正在创建一个带有另一个(不同)哈希的数据库。
两个环境都针对同一个数据库运行。除了我的构建服务器还部署了几个存储过程之外,它没什么区别。当Dev服务器启动并丢弃数据库时,这些存储过程会被吹走。
但是,这里有一个更广泛的问题,因为我显然不明白什么会影响EdmMetadata表中的ModelHash。我认为这是基于实际的二进制文件,但它必须不止于此。我在两台机器上运行完全相同的二进制文件。
当不同的环境创建数据库时,这些是他们的ModelHash:
BuildBox: 3E..FA
Local: 3E..FA
Dev: 99..58
请注意我的本地计算机和构建框匹配。这是完全可重复的。有谁知道这里会发生什么?
由于
答案 0 :(得分:1)
这两种环境使用的EF略有不同。我的构建盒正在使用预发布。 Dev正在使用RTF。尽管它们都是EF 4.1,但它们是不同的构建版本,并且编写了不同的ModelHash代码。
我在所有环境中安装了RTF,现在它们都生成了相同的ModelHash。