无法在LLBL Gen Pro中切换连接字符串

时间:2012-07-17 01:27:39

标签: sql-server-2008 tsql llblgenpro llblgen

我在Sql 2008 R2 Server中有两个具有相同模式的数据库,其名称为 Database1 Database2 。我在 Database1 上连接并执行查询,然后更改为 Database2 以使用以下代码获取我的实体

this.ConnectionString = "Server=TestServer; Database=Database2;Trusted_Connection=true";
using (IDataAccessAdapter adapter = new DataAccessAdapter(this.ConnectionString))
            {
                var entities = new EntityCollection<T>();
                adapter.FetchEntityCollection(entities, null);
                return entities;
            }

(在执行代码之前设置了连接字符串。)

我调试了应用程序并查看了连接字符串的值,它指向了Database2。

但是,当我执行上面的代码时,结果是从 Database1 返回。如果我查看SQL事件探查器,则该语句是针对 Database1 执行的。

那么,谁能知道发生了什么?为什么查询是针对 Database1 执行的,而不是 Database2

PS:如果我将上述连接字符串与普通ADO.NET一起使用,我就可以从Database2中检索数据。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我已经弄清楚发生了什么。原因是:默认情况下,LLBL Gen Pro使用完全限定名称,如[database1]。[dbo]。[Customer]来访问数据库对象,并在生成实体时指定目录。因此,您只能通过更改连接字符串来访问对象。 因此,要更改为另一个数据库,您必须使用以下代码覆盖默认目录

 var adapter= new DataAccessAdapter(ConnectionString, false, 
                                 CatalogNameUsage.ForceName, DbName)
                             {CommandTimeOut = TenMinutesTimeOut};

可在以下link

找到更多信息