加入Active Record中的数据库

时间:2011-02-03 20:57:01

标签: nhibernate castle-activerecord

Castle Active Record / NHibernate是否有办法跨两个数据库加入?

我在单独的数据库中的2个表中有数据,我需要将它们连接在一起并在一个查询结果集中返回。如果没有OO方式来做,可以使用hql或最坏的情况来完成,是否有一种标准的方法来执行动态sql并让它返回某种类型的集合,例如数据表?

2 个答案:

答案 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; }
}

我希望这有帮助。