私は監査プロパティ用の抽象基本クラスを持っています。簡潔にするために、それはLinqから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」の表に、単純な派生クラスをマッピングする;-)ことができないの衝撃の下で動揺しています。私が必要としたのは、あなたが今提供しているこれを達成できなかったという確認でした。ありがとう。 私が最終的に達成しようとしていたソリューションはKellyにもありがたいですが、ベースクラスでIAuditableプロパティを実装するLinq-to-SQLのコンテキスト内では不可能です –