我有一个审计属性的抽象基类。为简洁起见说它有一个属性
Public MustInherit Class AbstractAuditableEntity
...
Public Property CreatedTime() As DateTimeOffset
...
End Class
然后我的可审计域对象继承自这个类
Public Class Source
Inherits AbstractAuditableEntity
...
Public Property SourceId() As String
...
End Class
我有下表 DDL,我想将我的域对象“源”映射到该 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”在“源”类型中没有对应的成员。不支持从上述根类型映射成员。
在我的持久层的上下文中,我不是试图表示继承层次结构,而是在我的应用程序的上下文中,我只是使用一个基类来提供我的所有域对象所需的属性。通过大量摆弄我的映射文件(包括将审计列映射到基本 AbstractAuditableEntity 类型)和阅读,我无法实现我认为非常简单的 ORM 任务。
任何想法或建议都将受到欢迎!谢谢