При создании каждой развязочной таблицы генерируется класс записи развязочной таблицы. Его исходным описанием служит название развязочной таблицы (Name), а списком его свойств – соответствующие свойства развязочной таблицы .
Например, рассмотрим создание простой развязочной таблицы LinkTableName со свойствами ReferenceID, AnotherReferenceID и Value.
Класс модели предметной области, сгенерированный по этому описанию, выглядит следующим образом:
public partial class LinkTableName : ILinkTableRecord { public long ReferenceID { get; set; } public long AnotherReferenceID { get; set; } public decimal Value { get; set; } } |
Все классы записей развязочных таблиц реализуют интерфейс ILinkTableRecord. Соответственно можно получить перечень всех классов записей рзвязочных таблиц, запросив кто реализует этот интерфейс:
public interface ILinkTableRecord : IEntity { } |
Каждому свойству записи развязочной таблицы соответствует поле типа EditableValue<T>, где Т – один из указанных в метаданных типов.
Пример использования:
[Import] private ITableSourse DataContext { get; set; }
var reference = 10; var anotherReference = 11;
var query = from linktable in DataContext.GetTable<LinkTableName>() where linktable.ReferenceID == reference && linktable.AnotherReferenceID == anotherReference select linktable.Value;
return query.Single(); |