我有一个用于审计属性的抽象基类。为了简便起见说它有一个属性将派生类映射到Linq-to-SQL中的表格
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任务。
任何想法或建议将是最受欢迎的! 谢谢
我还是不能够很容易地映射在一个所谓的“ORM”派生类到表的简单;-)的冲击下岌岌可危。我所需要的只是确认我无法实现这个目前你已经提供的。谢谢。 感谢凯利也为您提供的解决方案是我最终试图实现的,但是在Linq-to-SQL实现的背景下,不可能在基类中实现IAuditable协议 – 2009-08-28 18:49:14