Pregunta

I have two databases with the same schema inside a Sql 2008 R2 Server, of which names are Database1 and Database2. I connected and performed queries on the Database1, and then changed to Database2 to fetch my entities using the following code

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;
            }

(The connection string was set before executing the code).

I debugged the application and looked at the value of the connection string, it pointed to the Database2.

However, when I executed the above code, the result was return from the Database1. And if I looked at SQL Profiler, the statement was executed against Database1.

So, could anyone know what was going on? Why the query was executed against the Database1, not Database2.

PS: If I used the above connection string with plain ADO.NET, I was able to retrieve data from Database2.

Thanks in advance.

¿Fue útil?

Solución

I have figured out what was going on. The reason was: by default LLBL Gen Pro uses fully qualified names like [database1].[dbo].[Customer] to access database objects, and the catalog is specified when generating entities. So you can't access objects just by changing the connection string. Hence, to change to another database you have to override the default catalogue by using following code

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

More information can be found at the following link

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top