У меня есть следующий код (упрощенно для краткости)
[ActiveRecord(Table = "[Order]"),
Serializable]
public class Order : ActiveRecordLinqBase<Order>, INotifyPropertyChanged
{
//Other properties omitted for brevity
private IList<Reading> _readings;
[HasMany(Inverse = true, Cascade = ManyRelationCascadeEnum.All)]
public virtual IList<Reading> Readings
{
get { return _readings; }
set
{
_readings = value;
DoPropertyChanged(() => this.Readings);
}
}
}
using (new SessionScope(FlushAction.Never) {
Order o = _repository.GetOrder(OrderId);
bool result = ShowReadings(this, o);
if (result) s.Flush();
}
bool ShowReadings(Window owner, Order o) {
//populate a datagrid with Reading objects from Order
this.Readings = Order.Readings //datagrid binds to Readings property of the form
if (cbxHistoricalChecked) {
using(new DifferentDatabaseScope(SomeOtherConnectionString)) {
//bind datagrid to historical readings
this.Readings = GetHistoricalReadings(Order.OrderId);
}
}
if (SignedOff) {
using(var t = new TransactionScope()) {
//update some properties on the Order
t.VoteCommit();
}
}
return true;
}
Итак, что я делаю, так это открываю SessionScope, когда форма чтения открыта, и очищается, когда она закрывается. Если пользователь хочет просмотреть исторические показания для заказа, я должен открыть другую базу данных для исторических показаний.
Все работает хорошо, пока я не открываю DifferentDatabaseScope, но когда я это делаю, создание нового TransactionScope завершается неудачно:
Castle.ActiveRecord.Framework.Scopes.ScopeMachineryException {"Попытка отменить регистрацию области, которая не является активной"}
Можно ли сделать то, что я пытаюсь сделать, и если да, то как правильно это сделать?