首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IInterceptor从nhibernate映射中过滤实体时出现问题

使用IInterceptor从nhibernate映射中过滤实体时出现问题
EN

Stack Overflow用户
提问于 2010-10-26 20:49:05
回答 1查看 237关注 0票数 0
代码语言:javascript
复制
public interface ILocalised
{
    Culture Culture { get; }
}

由于许多复杂的原因,我需要在从DB返回后过滤那些没有正确区域性的实体(即,我不能使用过滤器)。我的直接想法是创建一个拦截器,它将过滤任何不具有正确区域性的实体,例如

代码语言:javascript
复制
public class LocalisationInterceptor : EmptyInterceptor
{
    public override object Instantiate(string clazz, NHibernate.EntityMode entityMode, object id)
    {
        var entity = base.Instantiate(clazz, entityMode, id); //Returns null already

        if ((entity is ILocalised) && false == IsValidCulture((ILocalised)entity))
        {
            return null;
        }

        return base.Instantiate(clazz, entityMode, id);
    }

    public override bool OnLoad(object entity, object id, object[] state, string[] propertyNames, NHibernate.Type.IType[] types)
    {
        if((entity is ILocalised) && false == IsValidCulture((ILocalised)entity))
        {
            entity = null;
            return false;
        }

        return base.OnLoad(entity, id, state, propertyNames, types);
    }

    private bool IsValidCulture(ILocalised localisedEntity)
    {
        return localisedEntity.Culture == Culture.En;
    }
}

然而,到目前为止,我尝试覆盖它的任何方法都将始终返回实体。

有人知道如何防止某些实体被加载到拦截器或任何其他解决方案中吗?

EN

回答 1

Stack Overflow用户

发布于 2010-11-04 07:44:54

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4023788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档