部分クラスを使用してEntityFramework 5エンティティを拡張し、既存の他のエンティティにマップします

Yuxuan Xue

私はこのような質問が提起されたのを見たことがありません。そこで、EFの流暢なAPI開発者とnopcommerceプラグイン開発者向けに作成しました。

これが私がやろうとしていることです:

私は製品エンティティを持っており、EFがデータベースを生成するために使用できます。元のクラスを変更せずに製品エンティティを拡張したい。それで、私は部分的なクラスを使おうとしました。コードは次のようになります。

namespace Nop.Core.Domain.Catalog
{
    /// <summary>
    /// Represents a product
    /// </summary>
    public partial class Product : BaseEntity, ILocalizedEntity, ISlugSupported, IAclSupported, IStoreMappingSupported
    {
        //some fields here.
        public int ProductTypeId { get; set; }
        //.....
    }
}

今、私がこのようにクラスを拡張すると:

namespace Nop.Core.Domain.Catalog
{
    public partial class Product : BaseEntity
    {
        public int RestaurantId { get; set; }

        public virtual Restaurant BelongRestaurant { get; set; } 
     }
}

エラーがスローされます。

タイプ「Nop.Core.Domain.Catalog.Product」とタイプ「Nop.Core.Domain.Catalog.Product」はどちらも「Product」という同じ単純な名前を持っているため、同じモデルで使用することはできません。特定のモデルのすべてのタイプには、一意の単純な名前を付ける必要があります。'NotMappedAttribute'を使用するか、Code First fluent APIでIgnoreを呼び出して、モデルからプロパティまたはタイプを明示的に除外します。

これが私のマッピングファイルのようです:

namespace Nop.Plugin.Misc.Plugin
{
    public partial class ProductMap : EntityTypeConfiguration<Nop.Core.Domain.Catalog.Product>
    {
        public ProductMap()
        {
            //Table
            this.ToTable(Settings.DATABASE_TABLE_NAME);

            //Primary Key
            this.HasKey(t => t.Id);

            //Property
            this.Property(t => t.Id)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            this.HasRequired(p => p.BelongRestaurant)
                .WithMany(r => r.Menu)
                .HasForeignKey(p => p.RestaurantId)
                .WillCascadeOnDelete(false);
        }
    }
}

誰か助けてもらえますか?

エク

partial classは、1つのクラスに複数のファイルを含めることができる単なるシンタックスシュガーです。つまり、同じプロジェクトにいくつでも部分クラスを作成できます。

ただし、別のプロジェクトでクラスを使用する場合、たとえそれがであっても、その機能を拡張するpartial classために別のファイルを作成することはできませんpartial class

部分的なクラスとメソッドの詳細(C#プログラミングガイド)をお読みください

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Hibernate / JPAは、ネイティブクエリの結果を非エンティティ保持エンティティにマップします

分類Dev

別のエンティティを拡張するDoctrineエンティティ

分類Dev

分離されたエンティティまたは新しいエンティティをhibernate / jpaベストプラクティスの質問の既存のエンティティとマージする

分類Dev

エンティティに、他のエンティティにも属するエンティティが存在するかどうかを通知します

分類Dev

拡張エンティティフィールドのタイプを変更します

分類Dev

既存のエンティティを参照するエンティティを作成します

分類Dev

Objectifyインデックスを既存のプロパティと既存のエンティティに追加しますか?

分類Dev

既存のJPAエンティティをPicketLinkにマップする方法

分類Dev

別のプロパティの名前を使用して、EFエンティティプロパティを列にマップする必要があります

分類Dev

KOなしでマップされていないエンティティプロパティのBreezeメタデータを拡張する方法

分類Dev

Entity Framework Generic insertメソッドは、既存のエンティティを新しいエンティティと一緒に再度挿入しています

分類Dev

Broadleaf:製品エンティティの拡張に失敗しました

分類Dev

エンティティがマップされたエンティティのリストにあるかどうかを確認します

分類Dev

Entity Framework 7のテーブルにエンティティをどのようにマップしますか?

分類Dev

EntityFrameworkを使用して関連エンティティを別の既存のエンティティに変更する方法

分類Dev

Laravel : プライマリエンティティのみをセッションにバインドします

分類Dev

Hibernate-エンティティ全体をフェッチせずにエンティティのプロパティを取得します

分類Dev

別の一般的なクラスを拡張し、別のエンティティにジェネリッククラスを拡張するエンティティを変換する方法

分類Dev

EFCore2つのエンティティを同じテーブルにマップします

分類Dev

新しいエンティティまたは既存のエンティティをカスタマイズしますか?

分類Dev

Entity Frameworkは、エンティティオブジェクトを既存のテーブルAspNetUsersにマップします

分類Dev

別の既存のエンティティを含む新しいエンティティを作成する

分類Dev

JPAは、IDのみを使用して、既存のエンティティを参照して「新しい」エンティティを保存しますか?

分類Dev

Hibernate Named Query(他のエンティティに表示されないエンティティのすべてのインスタンスを選択します)

分類Dev

別のエンティティのIDを使用してエンティティを作成しますが、

分類Dev

Hibernateを使用して、エンティティー内でエンティティーのコレクションをマップする方法は?

分類Dev

EntityManagerは既存のエンティティを作成しようとします

分類Dev

多対多の関係をロードし、エンティティにマップします

分類Dev

EntityFrameworkを使用してエンティティの単一のプロパティを更新中にエラーが発生しました

Related 関連記事

  1. 1

    Hibernate / JPAは、ネイティブクエリの結果を非エンティティ保持エンティティにマップします

  2. 2

    別のエンティティを拡張するDoctrineエンティティ

  3. 3

    分離されたエンティティまたは新しいエンティティをhibernate / jpaベストプラクティスの質問の既存のエンティティとマージする

  4. 4

    エンティティに、他のエンティティにも属するエンティティが存在するかどうかを通知します

  5. 5

    拡張エンティティフィールドのタイプを変更します

  6. 6

    既存のエンティティを参照するエンティティを作成します

  7. 7

    Objectifyインデックスを既存のプロパティと既存のエンティティに追加しますか?

  8. 8

    既存のJPAエンティティをPicketLinkにマップする方法

  9. 9

    別のプロパティの名前を使用して、EFエンティティプロパティを列にマップする必要があります

  10. 10

    KOなしでマップされていないエンティティプロパティのBreezeメタデータを拡張する方法

  11. 11

    Entity Framework Generic insertメソッドは、既存のエンティティを新しいエンティティと一緒に再度挿入しています

  12. 12

    Broadleaf:製品エンティティの拡張に失敗しました

  13. 13

    エンティティがマップされたエンティティのリストにあるかどうかを確認します

  14. 14

    Entity Framework 7のテーブルにエンティティをどのようにマップしますか?

  15. 15

    EntityFrameworkを使用して関連エンティティを別の既存のエンティティに変更する方法

  16. 16

    Laravel : プライマリエンティティのみをセッションにバインドします

  17. 17

    Hibernate-エンティティ全体をフェッチせずにエンティティのプロパティを取得します

  18. 18

    別の一般的なクラスを拡張し、別のエンティティにジェネリッククラスを拡張するエンティティを変換する方法

  19. 19

    EFCore2つのエンティティを同じテーブルにマップします

  20. 20

    新しいエンティティまたは既存のエンティティをカスタマイズしますか?

  21. 21

    Entity Frameworkは、エンティティオブジェクトを既存のテーブルAspNetUsersにマップします

  22. 22

    別の既存のエンティティを含む新しいエンティティを作成する

  23. 23

    JPAは、IDのみを使用して、既存のエンティティを参照して「新しい」エンティティを保存しますか?

  24. 24

    Hibernate Named Query(他のエンティティに表示されないエンティティのすべてのインスタンスを選択します)

  25. 25

    別のエンティティのIDを使用してエンティティを作成しますが、

  26. 26

    Hibernateを使用して、エンティティー内でエンティティーのコレクションをマップする方法は?

  27. 27

    EntityManagerは既存のエンティティを作成しようとします

  28. 28

    多対多の関係をロードし、エンティティにマップします

  29. 29

    EntityFrameworkを使用してエンティティの単一のプロパティを更新中にエラーが発生しました

ホットタグ

アーカイブ