【问题标题】:nhibernate entity multi mappingsnhibernate实体多映射
【发布时间】:2011-07-07 14:22:44
【问题描述】:

我已将实体流畅地映射到现有的 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 存储结果?或者我可以应用什么其他解决方案?

谢谢,

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate mapping


    【解决方案1】:

    您不能对一个实体使用两种不同的映射。

    可以做的是使用custom SQL for loading

    【讨论】:

    • 基本上,使用自定义 SQL 加载加载我的所有实体,根据需要过滤它们,然后使用我的服务存储在我的历史表中?谢谢
    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多