1

我在 Sql 2008 R2 服务器中有两个具有相同架构的数据库,它们的名称是Database1Database2我连接并在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 Profiler,该语句是针对Database1执行的。

那么,有没有人知道发生了什么事?为什么查询是针对Database1而不是Database2执行的。

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

提前致谢。

4

1 回答 1

1

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

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

更多信息可以在以下链接中找到

于 2012-07-17T04:12:35.760 回答