舉個例子,比如客戶Customer和訂單Order是一對多的關系,那麼相應的hbm.xml配置為:
<bag name="Order" inverse="true" lazy="true" cascade="all-delete-orphan">
<key column="Customer_ID"/>
<one-to-many class="Entity.Order, Entity"/>
</bag>
<many-to-one name="Customer" class="Entity.Customer, Entity">
<column name="Customer_ID" length="12" sql-type="nvarchar" not-null="true"/>
</many-to-one>
CodeSmith,可以比較好的自動生成。這個工具比較方便,根據需要可對生成的hbm.xml稍作改動。前提是建好數據庫表的主外關系。
關於cascade="all-delete-orphan"這樣設置,NHibernate可以幫助完成以下三件事:
1.級聯保存或更新,相當於將cascade屬性設置成了"save-update"的情況。
2.級聯刪除,相當於將cascade屬性設置成了"delete"的情況。
3.刪除沒有父的所有子對象
相應的生成的實體類裏會有:private IList _orders 和 private Customer _customer
已經可以很清晰的看到一個客戶包含多個訂單,反過來也就是多對一的關系...。
1.添加mailInfo的文件。
2.模板生成的數據綁定列表有問題:
<INPUT type=checkbox value=0 name=IDS>
1對多可以了。
3。下面進行存儲過程調用,直接執行SQL 及事務處理。
3.1 事務,按示例可做出來,注意的就是,示例裏throws 異常後,就會自己回滾。
3.2存儲過程還沒無法調用。
3.3直接調用SQL,可以在,hbm.xml文件裏添加;如:
<query name="MailSendListTop100">
<![CDATA[from MailSend mailSend where mailSend.MSendState = 0]]>
</query>
3.4
在FastSpring.App.BLL.MailInfoManager 要想使用MailSendManager
首先聲明。
private IMailSendManager m_MailSendManager;
public IMailSendManager MailSendManager
{
set
{
m_MailSendManager = value;
}
}
還要在配置文件裏添加:
<!--Manager定義 -->
<object id="MailInfoManager" type="FastSpring.App.BLL.MailInfoManager,FastSpring.App">
<property name="MailInfoDAO" ref="MailInfoDAO"/>
<!-- 自己添加的 -->
<property name="MailSendManager" ref="MailSendManager"/>
<property name="UserInfoManager" ref="UserInfoManager"/>
</object>
呵呵,記好了,注入就是注入,是要麻煩點的,沒有像Castle那樣方便。
存儲過程還是無法調用。鬱悶中。。。
<!-- NHibernate 存儲過程的調用的實現 -->
<property name="DBHelper" ref="DBHelper"/>
是不是這句沒有配置對??