1. 定义了类 CnstBase,这个类映射到数据库表CnstBase表。
2. 定义了类V_CnstBase,映射到数据库视图V_CnstBase。因为视图V_CnstBase中的字段包括了所有CnstBase的字段,所以定义V_CnstBase类时,V_CnstPhase继承了CnstBase类。
3. 使用HQL来批量删除CnstBase表中的数据:
_session.Delete("From CnstBase p where p.ProjectId = 11");
4. 执行时抛出了异常,显示NHibernate删除的是V_CnstPhase的记录,由于V_CnstPhase是视图,删除失败。
问题是,NHibernate在HQL中为什么不是将CnstBase类映射到CnstBase表,而是V_CnstBase?Nhibernate是怎么处理类间的继承和派生?
另外,如果将V_CnstBase.hbm.xml在hibernate.xml中删除的话,就不会出现删除异常。
映射到表需要xml配置的吧
另外我记得sql server的视图是支持删改操作吧