2017-05-15 4 views
0

に実体インタフェースをキャストすることはできません、私は次のコードを持っている:ここではC#の - エンティティ

public class CoursesController : ApiController 
{ 
    private ITanulmanyokEntities _entities; 

    public CoursesController() 
     : this(new TanulmanyokEntities()) // ERROR HERE 
    { 
    } 
    public CoursesController(ITanulmanyokEntities entities) 
    { 
     if (entities == null) 
      throw new ArgumentNullException("entities"); 

     _entities = entities; 
    } 

} 

を、私はインターフェイスを作った:

から生成されたエンティティのためのインタフェースであると考えられる
public interface ITanulmanyokEntities : IDisposable 
{ 
    Int32 SaveChanges(); 

    DbSet<Application> Applications { get; set; } 
    DbSet<Course> Courses { get; set; } 
    DbSet<EducationSubject> EducationSubjects { get; set; } 
    DbSet<EducationUser> EducationUsers { get; set; } 
    DbSet<Program> Programs { get; set; } 

} 

データベース:

public partial class TanulmanyokEntities : DbContext 
{ 
    public TanulmanyokEntities() 
     : base("name=TanulmanyokEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    public virtual DbSet<Application> Applications { get; set; } 
    public virtual DbSet<Course> Courses { get; set; } 
    public virtual DbSet<EducationSubject> EducationSubjects { get; set; } 
    public virtual DbSet<EducationUser> EducationUsers { get; set; } 
    public virtual DbSet<Program> Programs { get; set; } 
} 

ただし、私はもう一方に変換することはできません。コメント行を参照してください。問題は、私のコンパイラがインターフェイス/本物を変換できないことです。私は実装しなければならないことをすべて実装したと思います(私は、動作するサンプルコードの一部にも従っています)。私は何が欠けていますか?

+0

TanulmanyokEntitiesをITanulmanyokEntitiesに変換することはできません。インターフェイスが実装されていないためです。そのインターフェイスは何ですか? – anserk

+0

これは 'TanulmanyokEntities'のインターフェースです。教師のサンプルコードはまったく同じで、彼のために働く...私は今、そのコードを実行しています。 –

+0

サンプルリンクを投稿できますか? – anserk

答えて

0

あなたはTanulmanyokEntitiesがITanulmanyokEntities

公共部分クラスのTanulmanyokEntitiesを実装することを宣言する必要が

public partial class TanulmanyokEntities : ITanulmanyokEntities 
{ 
} 

この方法で、私は」didnの生成されたコードを混乱させる必要があります。

+0

私はこれが正しいとは思わない。まず、私のサンプルコードはその宣言なしで動作し、また 'TanulmanyokEntities'は自動生成され、警告も表示されます:'このコードはテンプレートから生成されたものです。 ////このファイルを手動で変更すると、アプリケーションで予期しない動作が発生する可能性があります。 –

+0

ああ。生成されるTanulmanyokEntitiesクラスはPartialクラスなので、上のコードのようにインターフェイスを宣言するファイルを追加できます。 C#部分クラスは、同じアセンブリとモジュール内になければなりません。 –

0

ソリューションは、別の部分クラスを作成することでしたDbContext、ITanulmanyokEntities:

関連する問題