我在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中检索数据。
提前致谢。
答案 0 :(得分:1)
我已经弄清楚发生了什么。原因是:默认情况下,LLBL Gen Pro使用完全限定名称,如[database1]。[dbo]。[Customer]来访问数据库对象,并在生成实体时指定目录。因此,您只能通过更改连接字符串来访问对象。 因此,要更改为另一个数据库,您必须使用以下代码覆盖默认目录
var adapter= new DataAccessAdapter(ConnectionString, false,
CatalogNameUsage.ForceName, DbName)
{CommandTimeOut = TenMinutesTimeOut};
可在以下link
找到更多信息