Castle Active Record / NHibernate是否有办法跨两个数据库加入?
我在单独的数据库中的2个表中有数据,我需要将它们连接在一起并在一个查询结果集中返回。如果没有OO方式来做,可以使用hql或最坏的情况来完成,是否有一种标准的方法来执行动态sql并让它返回某种类型的集合,例如数据表?
答案 0 :(得分:1)
如果您已经映射了两个表,但是在单独的会话工厂中,我认为您无法做很多事情。您必须“加入”自己的代码。
如果不是这种情况,您可以通过数据库视图映射外表,即:
create view othertable as select * from otherdatabase..othertable
并将此视图映射到ActiveRecord中,就像它是本地表一样。
答案 1 :(得分:0)
您是否已经按数据库尝试了地图类?在ActiveRecord启动配置
中<config database="MsSqlServer2005" type="BaseClassDatabaseOne, MyAssembly">
</config>
<config database="MsSqlServer2005" type="BaseClassDatabaseTwo, MyAssembly">
</config>
abstract class BaseClassDatabaseOne {}
abstract class BaseClassDatabaseTwo {}
[ActiveRecord]
class MyClassModelTwo: BaseClassDatabaseTwo
{
[PrimaryKey(PrimaryKeyType.Native)]
public virtual Byte Id { get; set; }
}
class MyClassModel: BaseClassDatabaseOne
{
[PrimaryKey(PrimaryKeyType.Native)]
public virtual Byte Id { get; set; }
[BelongsTo("Id")]
public virtual MyClassModelTwo Two { get; set; }
}
我希望这有帮助。