EF Core2のジェネリックエンティティ構成クラス

alecardv

エンティティのジェネリック構成クラスを作成しようとしていますが、行き詰まります。

EntityBaseという抽象クラスがあります。

public abstract class EntityBase
{
    public int Id { get; set; }
    public int TenantId { get; set; }
    public DateTime CreatedOn { get; set; }
    public DateTime UpdatedOn { get; set; }
}

そして、EntityBaseから継承する他の多くのクラスでは、同じコードを使用して各クラスのDateTimeプロパティを構成する必要があります。こちらです:

void EntityTypeConfiguration<MyEntity>.Configure(EntityTypeBuilder<MyEntity> builder)
    {
        builder.HasIndex(e => e.TenantId);
        builder.Property(e => e.CreatedOn)
              .ValueGeneratedOnAdd()
              .HasDefaultValueSql("GETDATE()");

        // Other specific configurations here
    }

builder.ConfigureBase()のようなものを呼び出して、コードの重複を回避できるようにしたいと思います。何か案は?

Ivan Stoev

目標を達成する方法はいくつかあります。たとえば、IEntityTypeConfiguration<TEntity>クラスを使用しているように見えるので、メソッドを使用して基本汎用構成クラスを作成し、それからvirtual void Configure具象構成クラスを継承させ、Configureメソッドをオーバーライドしbase.Configureて、特定の調整を行う前に呼び出すことができます。

ただし、正確にを呼び出すことができるようにしたいとしますbuilder.ConfigureBase()その構文を許可するには、一般的なコードを次のようなカスタムのジェネリック拡張メソッドに移動するだけです。

public static class EntityBaseConfiguration
{
    public static void ConfigureBase<TEntity>(this EntityTypeBuilder<TEntity> builder)
        where TEntity : EntityBase
    {
        builder.HasIndex(e => e.TenantId);
        builder.Property(e => e.CreatedOn)
              .ValueGeneratedOnAdd()
              .HasDefaultValueSql("GETDATE()");

    }
}

サンプル使用法:

void IEntityTypeConfiguration<MyEntity>.Configure(EntityTypeBuilder<MyEntity> builder)
{
    builder.ConfigureBase();
    // Other specific configurations here
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

EFエンティティのジェネリック拡張

分類Dev

EF6エンティティのジェネリッククローン

分類Dev

EFでのジェネリックエンティティマッピング

分類Dev

EFコア-エンティティマッピング構成

分類Dev

EFエンティティのPOCOビジネスエンティティへのマッピング

分類Dev

EF Core 5.01つの汎用リポジトリで複数のエンティティクラスを管理する方法

分類Dev

ネストされたネストされたエンティティにアクセスする EF Core

分類Dev

プロジェクト間での共有エンティティ/構成の重複を回避するために、EF7 / .Net Core 3に抽象DbContextを実装するための優れたパターンはありますか?

分類Dev

EFコードサブクラスの最初のエンティティ列

分類Dev

DB /ドメインモデルのプリミティブ型のEFオブジェクトラッパー

分類Dev

ジェネリックスを使用するefコアselectステートメントの名前付きフィールドを選択します

分類Dev

EFの仮想リストプロパティのクエリ

分類Dev

EF6.1でのLINQクエリカスタムオブジェクトのベストプラクティス

分類Dev

クラス外のクラスをEFのエンティティとして使用する

分類Dev

EF Core(キーレスエンティティ)のクエリに基づいてオブジェクトを作成するにはどうすればよいですか?

分類Dev

EF Core2のクロスデータベース移行

分類Dev

EFを使用して単一のクエリで私のケースをクエリすることは可能ですか?(エンティティの条件とネストされたエンティティの条件)

分類Dev

EF Coreの基本DbContextクラスを使用してエンティティにアクセスするにはどうすればよいですか?

分類Dev

EFコア-1つのリクエストでエンティティを追加/更新し、子エンティティを追加/更新/削除します

分類Dev

EF6で生成されたエンティティクラスへの属性の追加

分類Dev

EFコアローディングエンティティがクエリにマップされない

分類Dev

EF Coreで、所有エンティティとの複合一意制約/インデックスを生成します

分類Dev

EF C#クエリでオブジェクトから特定のプロパティを読み込む

分類Dev

EFコア:新しいオブジェクトの作成中にFKオブジェクトにアクセスするために、エンティティを「再フェッチ」するための最も最適化された方法は何ですか?

分類Dev

EFコア結合結果のジェネリック型クラス

分類Dev

EFコアでの「インクルード」エンティティのフィルタリング

分類Dev

EFコア関連エンティティの追加(汎用リポジトリ)

分類Dev

EFコア関連エンティティの追加(汎用リポジトリ)

分類Dev

efコアのすべてのエンティティに共通の構成を適用する方法

Related 関連記事

  1. 1

    EFエンティティのジェネリック拡張

  2. 2

    EF6エンティティのジェネリッククローン

  3. 3

    EFでのジェネリックエンティティマッピング

  4. 4

    EFコア-エンティティマッピング構成

  5. 5

    EFエンティティのPOCOビジネスエンティティへのマッピング

  6. 6

    EF Core 5.01つの汎用リポジトリで複数のエンティティクラスを管理する方法

  7. 7

    ネストされたネストされたエンティティにアクセスする EF Core

  8. 8

    プロジェクト間での共有エンティティ/構成の重複を回避するために、EF7 / .Net Core 3に抽象DbContextを実装するための優れたパターンはありますか?

  9. 9

    EFコードサブクラスの最初のエンティティ列

  10. 10

    DB /ドメインモデルのプリミティブ型のEFオブジェクトラッパー

  11. 11

    ジェネリックスを使用するefコアselectステートメントの名前付きフィールドを選択します

  12. 12

    EFの仮想リストプロパティのクエリ

  13. 13

    EF6.1でのLINQクエリカスタムオブジェクトのベストプラクティス

  14. 14

    クラス外のクラスをEFのエンティティとして使用する

  15. 15

    EF Core(キーレスエンティティ)のクエリに基づいてオブジェクトを作成するにはどうすればよいですか?

  16. 16

    EF Core2のクロスデータベース移行

  17. 17

    EFを使用して単一のクエリで私のケースをクエリすることは可能ですか?(エンティティの条件とネストされたエンティティの条件)

  18. 18

    EF Coreの基本DbContextクラスを使用してエンティティにアクセスするにはどうすればよいですか?

  19. 19

    EFコア-1つのリクエストでエンティティを追加/更新し、子エンティティを追加/更新/削除します

  20. 20

    EF6で生成されたエンティティクラスへの属性の追加

  21. 21

    EFコアローディングエンティティがクエリにマップされない

  22. 22

    EF Coreで、所有エンティティとの複合一意制約/インデックスを生成します

  23. 23

    EF C#クエリでオブジェクトから特定のプロパティを読み込む

  24. 24

    EFコア:新しいオブジェクトの作成中にFKオブジェクトにアクセスするために、エンティティを「再フェッチ」するための最も最適化された方法は何ですか?

  25. 25

    EFコア結合結果のジェネリック型クラス

  26. 26

    EFコアでの「インクルード」エンティティのフィルタリング

  27. 27

    EFコア関連エンティティの追加(汎用リポジトリ)

  28. 28

    EFコア関連エンティティの追加(汎用リポジトリ)

  29. 29

    efコアのすべてのエンティティに共通の構成を適用する方法

ホットタグ

アーカイブ