Я принимаю проект, который был написан сторонними консультантами, которые уже ушли.
Я из EF backgournd.У одного из класса DAO есть следующее, и мне очень трудно разобраться в деталях того, что именно происходит, шаг за шагом.Если кто-то может помочь мне разобраться в этом разделе кода, это будет высоко ценится.
return HibernateTemplate.Execute(
delegate(ISession hbSession) // <<--What is this code actually trying to do?
{
string queryText = "from {0} x where x.Code = :Code";
queryText = string.Format(queryText, typeof(Product));
IQuery query = hbSession.CreateQuery(queryText);
query.SetParameter("Code", productCode);
query.SetCacheable(true);
query.SetCacheRegion(CoreCacheConstants.ProductQueryCacheRegion); // <-- What is this code trying to do.
var fund = query.UniqueResult(); // <-- Is this similar to DISTINCT keyword in LINQ?
if (fund == null)
throw new ArgumentException(String.Format("No product found with productcode: {0}", productCode: ));
NHibernateUtil.Initialize(((Product)Product).Details); // <--What is this code trying to do. And where is the execute method for above queries.
return fund;
}
) as Product
По сути, я запутался с частью делегата и почему делегат используется вместо простого запроса к базе данных.И что является преимуществом вышеуказанного подхода.
Также я не вижу ни одного xHibernate ORM, отображающего xml.Требуется ли Spring.NET отображение файлов для передачи данных из / в источник данных? Другими словами, как ISession знает, к какой базе данных подключаться и какую таблицу использовать и т. Д.