Domanda

Ho fatto un servizio SQLDependency nella mia applicazione.Funziona perfettamente quando digito le query a mano, ma non posso includere i caratteri jolly (non so davvero perché).

Ad esempio:

//Using this SqlCommand will work
new SqlCommand("SELECT [employees].[name] FROM [dbo].[employees]", sqlNotificationConn)

//But this one won't
new SqlCommand("SELECT [employees].* FROM [dbo].[employees]", sqlNotificationConn)

//And this one won't either
new SqlCommand("SELECT * FROM [dbo].[employees]", sqlNotificationConn)
.

Così fondamentalmente, voglio ottenere il mio dbContext per generare un comando select completo con tutti i campi con cui si tratta.

In Linq 2 SQL, ho utilizzato questo servizio utilizzando dbContext.GetCommand(.....);

in EF 4.0 (o è stato 4.1?), Ho usato dbContext.employee.ToTraceString();

Ma in EF 4.4, non riesco a trovare nulla per generare quella selezione della stringa di query ....

È stato utile?

Soluzione

con DbContext (DbQuery) È semplice come:

query.ToString()
.

con ObjectContext (ObjectQuery):

((ObjectQuery)query).ToTraceString()
.

A proposito, query può essere qualsiasi espressione basata su un DbSet (o ObjectSet, rispettivamente).Quindi qualcosa come dbContext.employee.Where(e => e.Name == "Gates").ToString() mostrerà anche la query SQL generata.

A linq Dichiarazione che costringe l'esecuzione, come ToList(), Single(), FirstOrDefault(), ecc., Crea un nuovo oggetto e ToString() restituire il nome del tipo dell'oggetto.

Altri suggerimenti

ToTraceString() è ancora in EF, lo stesso posto è sempre stato.Tuttavia, è su ObjectQuery, non DbQuery.Detto questo, non ho mai visto il fornitore di SQL Server per EF utilizza *;Utilizza sempre campi discreti in SQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top