NHibernate Criteria API zum Knutschen

by admin 25. September 2007 14:26

public RequestVisitedList GetBy(int userId, List<int> requestIds)
{
Disjunction disjunctionRequests
= new Disjunction();
foreach (int requestId in requestIds)
disjunctionRequests.Add(
Expression.Eq(
"RequestId", requestId));

return new RequestVisitedList(
_session.CreateCriteria(
typeof(RequestVisited))
.Add(Expression.Eq(
"UserId", userId))
.Add(disjunctionRequests)
.List
<RequestVisited>()
);
}

Der Code oben gibt eine Liste von allen Aufrufen einer Anfrage für eine bestimmten Benutzer zurück, eigentlich nichts Besonderes. Das großartige ist, das das Ganze in 3 min geschrieben war. Keine Stored Procedures, keine Strings zusammen bauen, einfach nur mit IntelliSense bewaffnet einen Abfrage Wunsch beschreiben und fertig ist das Ganze.

Ein hübscher Nebeneffekt, der Code ist Datenbank unabhängig.

Noch schöner wäre das Ganze wenn es für NHibernate schon einen LINQ Provider gäbe, denn soweit ich das Überblicke ist nur MS-SQL zurzeit voll unterstützt, alle anderen LINQ Provider stecken wohl noch in den Kinderschuhen.

Comments are closed

About Oliver

shades-of-orange.com code blog logo I build web applications using ASP.NET and have a passion for javascript. Enjoy MVC 4 and Orchard CMS, and I do TDD whenever I can. I like clean code. Love to spend time with my wife and our children. My profile on Stack Exchange, a network of free, community-driven Q&A sites

About Anton

shades-of-orange.com code blog logo I'm a software developer at teamaton. I code in C# and work with MVC, Orchard, SpecFlow, Coypu and NHibernate. I enjoy beach volleyball, board games and Coke.