При создании каждой табличной части генерируется класс записи табличной части. Его исходным описанием служит название табличной части (Name) +"TablePartRow", а списком его свойств – соответствующие свойства табличной части.
Например, рассмотрим создание простой табличной части DocumentName со свойствами ArticleID и Amount.
Класс модели предметной области, сгенерированный по этому описанию, выглядит следующим образом:
public partial class DocumentNameTablePartRow : ITablePartRecord, { public long ArticleID { get; set; } public decimal Amount { get; set; }
// Системные свойства, создаваемые автоматически для всех типов документов. public long ID { get; set; } public long DocumentID { get; set; } public long TablePartEntryID { get; set; } public bool Checked { get; set; } public DateTime TransactionDate { get; set; } public bool Deleted { get; set; } public bool DocumentDeleted { get; set; } } |
Все классы записей развязочных таблиц реализуют интерфейс ITablePartRecord. Соответственно можно получить перечень всех классов записей развязочных таблиц, запросив кто реализует этот интерфейс:
public interface ITablePartRecord : IEntity, IBusinessObject { long DocumentID { get; set; } DateTime TransactionDate { get; set; } bool DocumentDeleted { get; set; } bool Deleted { get; set; } long TablePartEntryID { get; set; } bool Checked { get; set; } } |
Каждому свойству записи табличной части соответствует поле типа EditableValue<T>, где Т – один из указанных в метаданных типов.
Пример использования:
[Import] private ITableSourse DataContext { get; set; }
var documentId = 100500; var deleted = 0;
var query = from tablepart in DataContext.GetTable<DocumentNameTablePartRow>() where tablepart.DocumentID == documentId && tablepart.Deleted == deleted select tablepart;
return query.ToDictionary( tablepart => tablepart.ArticleID, tablepart => tablepart.Amount); |