2017-01-04 4 views
2

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に、発電機がナビゲーション のプロパティを含まないようにする方法はありますか?

+0

グレートポインタでGitHubのケースの上に更新します。ありがとう。 –

答えて

2

v2.27での最新のリリース(2017年1月5日)は非表示列とプライマリの問題(#167)を固定していますこの作業を今できるようにするキーです。最新バージョン(今日のよう2.27)へのあなたのジェネレータは

  • プロジェクトに発電機を再度追加https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator
  • Updateから

    • ダウンロードv2.27(最新のコードをピックアップする)と再.ttファイルに変更を実装します。
    • ttファイルを保存します。

    すべての問題は、TPTで重複したIDの問題を解決するためにUpdateColumnの使用にhttps://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/issues/181

  • +0

    多くのおかげでサイモン - これはそれを分類しています。 –

    1

    あなたはそれを回避することができますように見えます:

    https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/issues/102

    +0

    多くのありがとう@ErikEJ - 非常に便利なリンク。私はアドバイスに従ってきましたが、私はいくつかの進歩を遂げてきましたが、引き続き問題を抱えています。つまり、導出されたテーブルはPOCOに、主キーを持たないためエンティティフレームワークで使用できないとのコメント'私はGitHubプロジェクトで問題を提起しました。 –

    関連する問題