2016-03-26 12 views
-1

データベースからEFコンテキストを生成しました。今私は、すべてのエンティティをベースエンティティから継承して、このベースエンティティを使用してすべてのエンティティを参照できるようにします。EF6自動生成モデルにベースクラス/インターフェイスを追加する方法

Public Partial Class Lookup : BaseEntity 
{ 
} 

私が使用しようとしていますたびに、DbSet.Add(エンティティ)

public class GenericRepository<T> : IRepository<T> where T:IRepositoryEntity 
{ 
    #region Private member variables... 
    internal March2016Entities Context; 
    internal DbSet<T> DbSet; 
    #endregion 

    #region Public Constructor... 
    /// <summary> 
    /// Public Constructor,initializes privately declared local variables. 
    /// </summary> 
    /// <param name="context"></param> 
    public GenericRepository(March2016Entities context) 
    { 
     this.Context = context; 
     this.DbSet = context.Set<T>(); 
    } 
    /// <summary> 
    /// generic Insert method for the entities 
    /// </summary> 
    /// <param name="entity"></param> 
    public void Insert(T entity) 
    { 

     DbSet.Add(entity); 
    } 
} 

それはBaseEntityはEFモデルの一部ではないと言います。私はContext.TTクラスを修正しようとしましたが、基本クラスを継承するエンティティクラスを生成するのに役立つようです。

オペレーションが機能するように、このベースクラスをエンティティモデルに追加するにはどうすればよいですか?提案してください。

+0

あなたがしようとしていることは問題ありません。おそらく、あなたはDbSetにBaseEntityを作成/追加しています(そうすることはできません)。それを抽象的なものにしてプロジェクトをコンパイルして、どこで作業しているかを確認してください。 – bubi

+0

例外をスローしている正確なコード行を追加しました。 DBSet.Add(Lookupエンティティ)を実行すると、エラーがスローされます。 – rohit

+0

DBSet宣言も表示できますか? – Domysee

答えて

0

問題を絞り込むことができました。 DBSetはBaseEntity型で、BaseEntityのDBSetを使用してエンティティを挿入しようとしました。 EFはこの例外をスローするのが正しいです。これは、Type BaseEntryの時点でリポジトリが返されたためです。 Typeエンティティのリポジトリを取得するとすぐに、問題は解決されました。

0

IRepositoryEntityのコードを追加することもできますか?私はBaseEntityでなければならないと考えていましたか?あなたのbaseEntity抽象を作成します。

関連する問題