1
0
经过长时间的挠头之后,答案变得不言而喻。首先,我重置了数据库中的搜索路径。这没有帮助。然后我用petapoco重新构建了poco,很快发现不仅是新的表“testme”,没有创建,也没有任何poco的表。因此,通过检查,petapoco中的database.tt文件显示它有错误的connectionStringName。将connectionStringName更改为“phoenixConnection”允许生成POCO,但再次未能找到“testme”表。 然后,正如上面所述,错误变得很明显,“phoenixconnection”和“localconnection”都指向同一个端口。在以前的开发中,PostgreSQL v10.1与更新的PostgreSQL v11.1在同一个端口上运行。显然,第一个PostgreSQL v10.1正在接收连接(而不是更新的PostgreSQL v11.1)。 转到services(services.msc)并关闭v10.1并运行database.tt,现在出现错误: System.InvalidOperationException:序列包含多个匹配元素 显然v10.1(我用于开发)只有一个模式,但v11.1有多个模式。我认为错误消息的意思是Petapoco看到了多个具有相同表名的表——也就是说,它没有区分模式。 所以问题现在解决了。
显然,petapoco在生成其poco时只能使用一个模式,但在运行时将从wcf的app.config读取连接字符串以执行其查询等(因此,在database.tt所在的app.config中,将petapoco指向只有一个模式的“开发”数据库,但在wcf环境中,将co指向将字符串连接到具有多个架构的新数据库。连接字符串的搜索路径 是 在运行npgsql时受到尊重)。 如果Petapoco能够在多模式环境中生成特定于模式的Poco,那就太好了,但是目前,我想它不能:( |