0
我想允许第三方代码在运行时扩展NHibernate映射。 这是我现在有:在运行时扩展NHibernate查询
SQL:
TABLE Orders
Id INT identity,
[more fields...]
代码在我的项目:
public interface IOrder
{
int Id { get; set; }
// more properties...
}
internal class Order : IOrder
{
public int Id { get; set; }
}
public class OrderDAL
{
public IEnumerable<IOrder> GetOrders()
{
ICriteria criteria;
// build some criteria
var result = criteria.List<Order>();
RaiseOrdersLoaded(result);
return result;
}
}
的NHibernate HBM文件:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="..." assembly="...">
<class name="Order" table="Orders">
<id name="Id" column="Id" type="int" >
<generator class="identity" />
</id>
[more properties...]
</class>
</hibernate-mapping>
第三方是我加载Ioc的dll。它知道接口IOrder
,但不知道类Order
。它的开发者也在我的数据库添加表:
TABLE OrderExtension
OrderId PK, FK from Orders
CustomField nvarchar
现在第三方开发者应该能够做到:
- 加入他的
CustomField
到查询中GetOrders
。我想在运行时扩展hbm文件,但我不知道如何。 - 将查询条件添加到查询中,以按照他的
CustomField
进行过滤。 - 收听
OrdersLoaded
事件并以某种方式获取他的数据。
这一切可能吗?
感谢
谢谢你的回答。随着我方发展的进展,我需要彻底改变我的问题。我会再问一次,希望你能帮助我。 –
这是我的新问题http://stackoverflow.com/questions/14134066/initialize-associated-entity-or-collection-fails-with-stateless-session-in-nhibe –