У меня есть абстрактный базовый класс для свойств аудита. Для краткости скажем, что у него есть одно свойство
Public MustInherit Class AbstractAuditableEntity
...
Public Property CreatedTime() As DateTimeOffset
...
End Class
А потом мои проверяемые доменные объекты наследуются от этого класса
Public Class Source
Inherits AbstractAuditableEntity
...
Public Property SourceId() As String
...
End Class
У меня есть следующая таблица DDL, с которой я хочу сопоставить свой объект домена «Источник». По сути, отношение между каждым (конкретным) объектом домена и таблицей составляет 1-1, при этом каждая таблица имеет необходимый столбец аудита.
CREATE TABLE Source
(
SourceID VARCHAR(10) NOT NULL,
CreatedTime DATETIMEOFFSET(3) NOT NULL,
CONSTRAINT PK_Source PRIMARY KEY (SourceID))
GO
Используя внешний файл сопоставления, моя первая попытка сопоставить класс с таблицей была бы глупой:
<?xml version="1.0" encoding="utf-8"?>
<Database Name="" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007">
<Table Name="Source" Member="Sources">
<Type Name ="Source">
<Column Name="SourceID" Member="SourceID" IsPrimaryKey="true" CanBeNull="false"/>
<Column Name="CreatedTime" Member="CreatedTime" />
</Type>
</Table>
</Database>
Однако это приводит к следующему исключению:
Столбец или ассоциация 'CreatedTime' в отображении не имели соответствующего члена в типе 'Source'. Отображение членов из корневого типа не поддерживается.
В контексте моего уровня персистентности я не пытаюсь представить иерархию наследования как таковую, но в контексте моего приложения я просто использую базовый класс для обеспечения свойств, требуемых всеми объектами моего домена. Из-за большого количества возни с моим файлом сопоставления (включая сопоставление столбцов аудита с базовым типом AbstractAuditableEntity) и чтения вокруг, я не могу достичь того, что я считаю довольно простой задачей ORM.
Любые мысли или предложения будут приветствоваться!
Спасибо