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 –