当前位置: 首页 > 编程语言 > C#

如何使用FluentNHibernate和多数据库识别特定实体的session工厂分享

时间:2023-04-10 11:32:50 C#

如何使用FluentNHibernate和多数据库识别特定实体的session工厂,这里应该有足够的上下文)。我的问题是:我正在使用FluentNHibernate。我的应用程序使用多个数据库。每个数据库都有自己的实体注册(映射)到它。结果是有多个会话工厂,每个都与单个数据库相关,并且每个都“包含”自己的一组映射实体。对于加载实体,我创建了一个通用工厂类,它提供了一些可用于任何注册实体(在任何数据库中)的标准加载方法。问题是:加载方法需要为我正在处理的实体类使用正确的会话工厂。如何确定我需要使用哪个会话工厂?我手头有所有会话工厂(并按数据库名称索引),我只需要一种方法,只知道我将要加载的实体类型,选择要使用的正确会话工厂。例如:publicIBaseBusinessObjectCreatePopulatedInstance(TypeboType,GuidinstanceKey){IBaseBusinessObjectresult=null;ISessionFactorysessionFactory=GetSessionFactory(boType);使用(ISessionsession=sessionFactory.OpenSession()){使用(session.BeginTransaction()){结果=(IBaseBusinessObject)session.Get(boType,instanceKey);}}返回结果;}在GetSessionFactory(boType)中需要发生什么?谢谢阅读!我首先看一下ISessionFactory.GetClassMetaData方法。IClassMetadata元数据=sessionfactory.GetClassMetadata(boType);如果您可以维护ISessionFactory实例的列表,则可以枚举它们,直到找到具有类型为boType的元数据的实例。我从未使用过它,也没有我的引用,但我希望它返回null或在它无法识别类型时抛出异常。如果您无误地获得了元数据的值,那么这就是您的会话工厂。祝你好运尼尔。以上就是C#学习教程分享的全部内容:如何使用FluentNHibernate和多数据库识别特定实体的sessionfactory。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: