在 nhibernate 的實體類對映中, 如果實體類的屬性需要通過 sql 計算才能得到, 則可以使用 formula 選項解決。
nhibernate 對 formula 的要求如下:
場景1: 對映需要計算的屬性
以下面的 category 對映為例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
xml
version="1.0" encoding="utf-8" ?>
<
<
class
name="category" table="[categories]" schema="[dbo]">
<
id
name="categoryid" column="[categoryid]" type="int" />
<
property
name="categoryname" column="[categoryname]" type="string"/>
<
property
name="description" column="[description]" type="string"/>
<
property
name="picture" column="[picture]" type="binary"/>
<
set
name="products" lazy="true">
<
key
column="categoryid" />
<
one-to-many
class="product" not-found="ignore"/>
如果要增加乙個屬性 nameanddesc , 把 categoryname 和 description 兩個字段連線起來, 用 formula 可以這樣做:
1
<
property
name="nameanddesc" formula="[categoryname] + ' ' + [description]" type="string" />
場景2: 對映複雜的 sql 型別
sql 2008 支援空間資料型別 geography 和 geometry , 對映空間資料型別可以通過 nhibernate 的空間擴充套件解決, 操作起來比較麻煩, 在客戶端不需要空間資料型別或者不能處理空間資料型別的情況下, 可以用 formula 處理。 示例表結構定義如下:
1
2
3
4
create
table
spatialtable (
id
int
identity (1,1),
geogcol1 geography,
);
使用 formula 的對映檔案如下:
1
2
3
4
5
6
7
<?
xml
version="1.0" encoding="utf-8" ?>
<
<
class
name="category" table="[categories]" schema="[dbo]">
<
id
name="id" column="[id]" type="int" />
<
property
name="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...