舉個例子,比如客戶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"/>
是不是这句没有配置对??