Объединение баз данных в Active Record - PullRequest
0 голосов
/ 03 февраля 2011

Есть ли в Castle Active Record / NHibernate способ объединить две базы данных?

У меня есть данные в 2 таблицах в отдельных базах данных, которые мне нужно объединить и вернуть в одном наборе результатов запроса. Если нет OO-способа сделать это, может ли это быть сделано с использованием hql или худшего случая, есть ли стандартный способ выполнить динамический sql и заставить его вернуть обратно какую-то коллекцию, такую ​​как datatable?

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Если у вас есть две таблицы, которые уже сопоставлены, но на отдельных фабриках сессий, я не думаю, что вы сможете с этим многое сделать.Вам нужно будет «присоединиться» в своем собственном коде.

Если это не так, вы можете отобразить внешнюю таблицу через представление базы данных, то есть:

create view othertable as select * from otherdatabase..othertable

и отобразить этопросматривать в ActiveRecord, как если бы это была локальная таблица.

0 голосов
/ 07 февраля 2011

Вы уже пробовали карты классов по базе данных? В вашей конфигурации запуска 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; }
}

Надеюсь, это поможет.

...