NHibernate 關係對映中的 Formula

2021-09-22 08:45:21 字數 2890 閱讀 8047

在 nhibernate 的實體類對映中, 如果實體類的屬性需要通過 sql 計算才能得到, 則可以使用 formula 選項解決。

nhibernate 對 formula 的要求如下:

場景1: 對映需要計算的屬性

以下面的 category 對映為例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?xmlversion="1.0" encoding="utf-8" ?>

<

<classname="category" table="[categories]" schema="[dbo]">

<idname="categoryid" column="[categoryid]" type="int" />

<propertyname="categoryname" column="[categoryname]" type="string"/>

<propertyname="description" column="[description]" type="string"/>

<propertyname="picture" column="[picture]" type="binary"/>

<setname="products" lazy="true">

<keycolumn="categoryid" />

<one-to-manyclass="product" not-found="ignore"/>

如果要增加乙個屬性 nameanddesc , 把 categoryname 和 description 兩個字段連線起來, 用 formula 可以這樣做:

1

<propertyname="nameanddesc" formula="[categoryname] + ' ' + [description]" type="string" />

場景2: 對映複雜的 sql 型別

sql 2008 支援空間資料型別 geography 和 geometry , 對映空間資料型別可以通過 nhibernate 的空間擴充套件解決, 操作起來比較麻煩, 在客戶端不需要空間資料型別或者不能處理空間資料型別的情況下, 可以用 formula 處理。 示例表結構定義如下:

1

2

3

4

createtablespatialtable (

idintidentity (1,1),

geogcol1 geography,

);

使用 formula 的對映檔案如下:

1

2

3

4

5

6

7

<?xmlversion="1.0" encoding="utf-8" ?>

<

<classname="category" table="[categories]" schema="[dbo]">

<idname="id" column="[id]" type="int" />

<propertyname="geocol1" formula="[geogcol1].stastext()" type="string" />

NHibernate 關聯對映

nhibernate 體系結構 nhibernate isessionfactory配置 nhibernate 持久化類 persistent classes nhibernate 集合類 collections 對映 單向關聯是最常用的也是最難正確使用的。在本文中會逐個經歷規範的案例,從單向對映開...

NHibernate配置及對映檔案

配置nhibernate有三種常見的配置方法。xml version 1.0 encoding utf 8 configuration configsections section name hibernate configuration type nhibernate.cfg.configurat...

Nhibernate多對多對映

一般來說多對多對映,對映表不需要設定為實體類,但如果特殊需求,如需要新增欄位isactived等,這個時候就需要將對映表設定為實體,同時該實體需要針對兩邊的類做many to one對映,而兩邊的類需要做來實現雙向關聯,如下例 需求 系統需要對私人 accountinfo 傳送短訊息 message...