2011-03-02 212 views
0

我有實體流利地映射到現有的Oracle觀點:
NHibernate的實體多映射

public class MyEntityMap : ClassMap<MyEntity> 
{ 
    public class MyEntityMap() 
    { 
     ReadOnly(); 
     SchemaAction.None(); 
     //mappings 
    } 
} 

我查詢實體Oracle視圖和過濾他們根據一定的標準,比方說,在CREATED_DATE超過14天。應將這些實體寫入數據庫以備將來使用。爲此,我創建了一個表格,它是字段中的oracle視圖的精確克隆。我想將完全相同的MyEntity映射到我自己的桌子上。類似的東西:

public class MyHistoricalEntityMap : ClassMap<MyEntity> 
{ 
    public class MyHistoricalEntityMap() 
    { 
     Table("HistoricalEntities"); 
     //mappings 
    } 
} 

另外,我負責查詢視圖服務,但我想要添加到存儲我的歷史實體的方法,水木清華象下面這樣:

public class MyEntityService : IMyEntityService 
{ 
    private IRepository<MyEntity> _repository; 
    ...  
    public IEnumerable<MyEntity> GetEntities(){...}  
    public void StoreHistoricalEntities(IEnumerable<MyEntity> historicalEntities) {...} 
} 

所以,問題是, :我如何指定,我想(或nhibernate應該)使用MyEntityMap進行查詢,但MyHistoricalEntityMap用於存儲結果?或者我可以申請哪些其他解決方案?

感謝,

回答

0

不能使用兩個不同的映射的實體。

可以做的是使用custom SQL for loading

+0

基本上,使用自定義SQL加載加載我的所有實體,根據需要過濾它們,然後使用我的服務存儲在歷史表中?謝謝 – msqsf 2011-03-04 16:32:33