При создании каждого итога генерируется три класса движения итога. Их исходным описанием служит название итога (Name) +"Transaction" для класса транзакции итога, +"Balance" для класса баланса итога и +"DetailedTransaction" для класса детализированной транзакции итога. А исходным описанием списка их свойств служат соответствующие измерения и переменные итога.
Например, рассмотрим создание простого итога TotalName с измерением DimensionID и переменной Variable.
Класс модели предметной области, сгенерированный по этому описанию, выглядит следующим образом:
// Класс транзакции итога. public partial class TotalNameTransaction : TransactionValue { public long DimensionID { get; set; } public decimal Variable { get; set; } }
// Класс баланса итога. public partial class TotalNameBalance : BalanceValue { public long DimensionID { get; set; } public decimal Variable { get; set; } }
// Класс детализированной транзакции итога. public partial class TotalNameDetailedTransaction : DetailedTransactionValue { public long DimensionID { get; set; } public decimal Variable { get; set; } } |
Классы движений итогов наследуются от следующих базовых классов:
•классы транзакций итогов наследуются от класса TransactionValue, который в свою очередь наследуется от базового класса TransactionBase:
public abstract class TransactionValue : TransactionBase, IEquatable<TransactionValue>, IComparable<TransactionValue> { public long DocumentID { get; set; } public DateTime TransactionDate { get; set; } public long DeltaNo { get; set; } public long ScriptID { get; set; } public long PairTotalID { get; set; } public Document Document { get; set; } public Total Script { get; set; } public Total PairTotal { get; set; } } |
•классы балансов итогов наследуются от класса TransactionValue, который в свою очередь наследуется от базового класса TransactionBase:
public abstract class BalanceValue : TransactionBase, IEquatable<BalanceValue> |
•классы детализированных транзакций итогов наследуются от класса DetailedTransactionValue, который в свою очередь наследуется от базового класса TransactionBase:
public abstract class DetailedTransactionValue : TransactionValue, IEquatable<DetailedTransactionValue>, IComparable<DetailedTransactionValue> { public long DeltaSubNo { get; set; } public decimal LotNo { get; set; } } |
Каждому свойству движения итога соответствует поле типа EditableValue<T>, где Т – один из указанных в метаданных типов.
Пример использования:
[Import] private ITableSourse DataContext { get; set; }
var documentId = 100500;
var query = from total in DataContext.GetTable<TotalNameTransaction>() where total.DocumentID == documentId select total;
return query.ToDictionary( total => total.DimensionID, total => total.Variable); |