2010-08-11 101 views
34

當使用SetProjection()時,根據數據庫理論和NHibernate,什麼是Projection?什麼是投影?

+0

可能重複[什麼是投影在NHibernate?](http://stackoverflow.com/questions/4746995/what-is-a-projection-in-nhibernate) – philipxy 2015-07-15 08:29:29

回答

29

很簡單,這是一個函數,它接受一個輸入(例如,數據庫的行),並且產生(基於多列例如從行中的一列,或者一些計算)的輸出。

+0

在Hibernate中,產生的函數在哪裏輸出(例如列)被執行?它是在SQL數據庫服務器上發生還是在返回完整行結果後在應用程序/ hibernate服務器上發生?謝謝。 – KyleM 2012-10-30 20:23:01

+0

@KyleM:因爲我已經使用NHibernate來說明了這一點太長了,但我希望它可以作爲SQL的一部分來執行。 – 2012-10-30 22:11:22

+0

謝謝..這也是我的想法。我只記得另一種檢查方式(我們通常不使用hibernate查詢日誌記錄),所以我將檢查並報告回來。 – KyleM 2012-10-31 00:20:14

29

投影是關係代數的基本業務之一。它將關係的屬性列表(可能爲空)作爲輸入。它輸出的關係只包含指定的屬性列表,刪除重複的元組。換句話說,輸出也必須是一種關係。例如,如果關係R {A,B}包含三個元組{1,10},{2,10},{3,20},則R在屬性列表{B}上的投影將包含2元組:{10},{20}。

總之,投影是或多或少相當於在SQL中SELECT DISTINCT(用null不含箱子和重複列)。

2

在休眠方面,它就像指定要選擇哪些列。而不是讓映射決定哪些列被提取。這意味着您可以通過ProjectionList指定sql函數,子查詢,單列或上述所有內容。例如,如果您想對錶SetProjection(Projections.RowCount())中的行進行計數。

7

投影表示查詢中列的子集。

select x, y, z from YourTable 

x,y,z是這裏的投影。

+5

難道這「欄目的一個子集」,而不是「列數」 ? – CoDEmanX 2016-03-31 21:26:07

2

如果你熟悉SQL或數據庫表: 投影指的字段/列/屬性返回的數量。 選擇處理要返回的行數/記錄數。 有良好的視頻的解釋herehere

+0

儘管這些鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Cleb 2015-07-04 20:02:18

-1

also call projection

它也叫投影,請查看圖

投影反應系統中的事件

項目是簡單聽衆

+0

不,投影不是一個監聽器,它是一個映射。好的照片,錯誤的解釋。 – 2018-01-04 21:33:21