Domanda

Sto usando LINQ to NHibernate.

Ho un seguente caso di test:

[TestMethod]
[DeploymentItem("hibernate.cfg.xml")]
public void Category_Should_GetAllByLinq()
{
  // Arrange
  IRepository<Category> repo = new CategoryRepository();

  //Act
  IList<Category> list = repo.GetListByLinq();

  //Assert
  Assert.IsTrue(list.Count > 0);
}

e anche io ho seguente codice nella classe CategoryRepository:

public IList<Category> GetListByLinq()
{
  ISession session = NHibernateHelper.OpenSession();

  // When following statement is executed, How to check converted real sql query?
  var query = from c in session.Linq<Category>()
                        select c;

  return query.ToList();
}

La mia domanda è che una volta che LINQ to NHibernate dichiarazione viene eseguita, come controllare query SQL vero convertito? qualsiasi metodo?

So che posso utilizzare SQL Profiler, però mi piacerebbe utilizzare oggetto Mock in caso di test in modo da non voglio vederlo in qualsiasi metodo relativi database.

È stato utile?

Soluzione

Buona domanda.

Credo che il modo migliore per affermare l'SQL generato sarebbe quella di utilizzare IInterceptor e agganciarsi OnPrepareStatement .

Se è ok per voi a vedere solo le istruzioni SQL nella finestra di output durante il debug si può semplicemente abilitare show_sql opzione.

Altri suggerimenti

È possibile utilizzare il NHibernate Profiler per farlo, vedere questo post per i dettagli su come impostare l'integrazione programmatica: http://ayende.com/ blog / archive / 2009/12/13 / uumlberprof-new-funzione-programmatico-integration.aspx

Un'altra opzione, un po 'più complicato, è quello di ascoltare il registratore NHibernate.SQL ed elaborare i suoi risultati. Ti dà le informazioni, ma avrebbe bisogno di un po 'di analisi e non vi darà le informazioni sessioni

Hai provato NHiberate Profiler ? Dovrebbe essere quello che stai cercando.

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