2017-05-15 25 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:的DbContext,ITanulmanyokEntities

+0

我不认为这是正确的。首先,我的示例代码在没有声明的情况下工作,而且'TanulmanyokEntities'是自动生成的,并且还带有警告:'此代码是从模板生成的。 ////手动更改此文件可能会导致您的应用程序出现意外的行为。 –

+0

啊..我打赌你先不使用代码。生成的TanulmanyokEntities类是一个Partial类,因此您可以像上面的代码一样添加一个声明界面的文件。 c#部分类必须位于同一个程序集和模块中。 –

0

的解决方案是创建另一个部分类:

public partial class TanulmanyokEntities : ITanulmanyokEntities 
{ 
} 

这样一来,我没有”不得不混淆生成的代码。