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.