Класс записи табличной части

При создании каждой табличной части генерируется класс записи табличной части. Его исходным описанием служит название табличной части (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);