2011-03-02 182 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