Что такое Projection с точки зрения теории баз данных и NHibernate при использовании SetProjection ()?
Проще говоря, это функция, которая принимает ввод (например, строку базы данных) и производит вывод (например, один из столбцов в строке или, возможно, некоторые вычисления, основанные на нескольких столбцах).
Проекция - одна из основных операций реляционной алгебры. Она принимает на вход отношение и (возможно, пустой) список атрибутов этого отношения. На выходе получается отношение, содержащее только указанный список атрибутов с удаленными дублирующими кортежами. Другими словами, выходной результат также должен быть отношением.
Пример, если отношение R{A,B} содержит три кортежа {1,10}, {2,10}, {3,20}, то проекция R на список атрибутов {B} будет содержать 2 кортежа: {10},{20}.
Короче говоря, проекция более или менее эквивалентна SELECT DISTINCT в SQL (исключая случаи с нулями и дублирующимися столбцами).
С точки зрения гибернации, это все равно что указать, какие столбцы следует выбирать. Вместо того, чтобы позволять сопоставлениям определять, какие столбцы выбираются. Это означает, что вы можете указать функции sql, подзапросы, отдельный столбец или, возможно, все вышеперечисленное через ProjectionList. Например, если вы хотите подсчитать строки в таблице SetProjection (Projection.RowCount ())
.