nhibernate实体多映射

时间:2011-03-02 20:58:21

标签: c# nhibernate fluent-nhibernate mapping

我将实体流利地映射到现有的oracle视图:

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用于存储结果?或者我可以应用其他解决方案?

谢谢,

1 个答案:

答案 0 :(得分:0)

您不能为实体使用两个不同的映射。

可以做的是使用custom SQL for loading