table-per-type継承シナリオで(素晴らしい)EntityFramework Reverse POCO Generatorを使用してPOCOを生成できますか?エンティティフレームワークでのテーブル単位の継承逆POCOジェネレータ
私のデータベースは、「ベースは」テーブルを記録含まれており、そこから派生する二つのテーブル: - LogBase、のErrorLog、および変更履歴 - の各デフォルト
create table LogBase
(
Id int identity(1, 1) not null,
LogTime datetime not null default getdate(),
constraint PK_LogBase primary key clustered(Id)
)
create table ErrorLog
(
Id int not null,
ErrorMessage nvarchar(max),
StackTrace nvarchar(max),
constraint PK_ErrorLog primary key(Id),
constraint FK_ErrorLog_LogBase foreign key(Id) references LogBase(Id)
)
create table ChangeLog
(
Id int not null,
PropertyName nvarchar(max),
OldValue nvarchar(max),
NewValue nvarchar(max),
constraint PK_ChangeLog primary key(Id),
constraint FK_ChangeLog_LogBase foreign key(Id) references LogBase(Id)
)
、リバースPOCOジェネレータは3 C#クラスを生成し、 Id
プロパティを含み、相互に継承関係を持たない。
クラスをpartialとして作成し、部分クラスに: LogBase
の継承を入れて、ErrorLogとChangeLogをLogBaseから継承するように指定することができます。これは継承を指定する正しい方法ですか?
テンプレートジェネレータでは、UpdateColumn
コールバックを使用して、生成されたPOCOでId
列を省略する必要がある表を指定できます。
ErrorLogテーブルとChangeLogテーブルにUpdateColumn
を使用できます。これにより、各クラスから 'Id'プロパティが削除されます。これは、タイプごとのテーブル継承に適しています。しかし、それはまた、生成されたDbContextから削除されているのErrorLogと変更履歴のクラスになり、そして次のコメントはのErrorLogと変更履歴のクラスに表示されます。
// The table 'ChangeLog' is not usable by entity framework because it
// does not have a primary key. It is listed here for completeness.
はせずに継承関係を指定する方法はあります ジェネレータがモデルから派生テーブルを削除するのを引き起こしますか?
生成されたPOCOに、発電機がナビゲーション のプロパティを含まないようにする方法はありますか?
グレートポインタでGitHubのケースの上に更新します。ありがとう。 –