Я хотел бы найти разницу в использовании этих трех способов получения данных из базы данных, когда делает что-то вроде:разница между NHibernate Query <T>, получить <T> и загрузить <T>
public T GetById(int id) {
using (var db = Database.Session) {
using (var t = db.BeginTransaction()) {
try {
return db.Get<T>(id);
}
catch (Exception) {
if (!t.WasCommitted) {
t.Rollback();
}
throw;
}
}
}
}
или
public T GetById(int id) {
using (var db = Database.Session) {
using (var t = db.BeginTransaction()) {
try {
return Query<T>().First(x=>x.Id == id);
//or something like
//return Query<T>().Where(x=>x.Id == id).FirstOrDefault();
//or
//return QueryOver<T>().Where(x=>x.Id == id).FirstOrDefault;
}
catch (Exception) {
if (!t.WasCommitted) {
t.Rollback();
}
throw;
}
}
}
}
или даже так:
public T GetById(int id) {
using (var db = Database.Session) {
using (var t = db.BeginTransaction()) {
try {
return db.Load<T>(id);
}
catch (Exception) {
if (!t.WasCommitted) {
t.Rollback();
}
throw;
}
}
}
}
И добавив еще один вопрос к этому, как Query()
отличается от QueryOver()
?
Я прочитал несколько ответов здесь, в stackoverflow, но поскольку большинство из них было посвящено началу использования Linq и NHibernate 3, я хотел бы знать, как выглядит этот сценарий сегодня.
Может быть, [это] (https://ayende.com/blog/3988/nhibernate-the-difference-between- get-load-and-query-by-id) может вам помочь? – SeM