我有一个场景,我有一个使用NHibernate和S#arp架构构建的新应用程序。此应用程序正在集成到不使用NHibernate的遗留应用程序中。旧版和新版应用程序将有单独的数据库。我能够使用两个S#arp NHiberate工厂密钥(detailed here)成功读取两个数据库中的对象。一切都很好。我的问题是当我想将属性从我的新应用程序中的类映射到旧数据库中的对象时。请考虑以下情形:
public class NewUser
{
public virtual LegacyUser LegacyUser { get; set; }
}
public class LegacyUser
{
public virtual string UserName { get; set; }
}
我可以读取我的NewUser对象,但是当我尝试引用LegacyUser属性时出现错误:
System.Data.SqlClient.SqlException: Invalid object name 'NewSchema.LegacyUser'.
我怀疑这种情况正在发生,因为正在检索NewUser对象的会话对读取旧用户对象所需的会话一无所知。会话工厂密钥通常由S#arp存储库指定。
我已尝试在映射中指定架构,但这也不起作用。
mapping.Schema("OldSchema");
问题:有没有办法在Fluent NHibernate映射中指定当NewUser对象尝试读取LegacyUser对象时,它需要使用不同的会话工厂?或者我是否必须手动从旧数据库中读取对象并将它们插入到我的新类中?
提前致谢!