2014-09-29 60 views
0

无法获取数据。我可以在Visual Studio中看到数据。但是我可以在网页前端显示数据,当我去到网站mycomputername:21290/breeze/breeze/getdata。我得到这个异常:无法投入'MySqlEntities'类型的对象来键入'System.Data.Entity.DbContext'。Breeze System.InvalidCastException与EntityFramework

我必须要有odata控制器吗?

public class BreezeController: ApiController 
{ 
private readonly IRepository _repo; 

.. 

[HttpGet] 
     public IEnumerable<MySqlType> GetData() 
     { 
      return _repo.GetData(); 
     } 

} 

public class Repository : IRepository 
{ 
private readonly EFContextProvider<MySqlEntities> 
      _contextProvider = new EFContextProvider<MySqlEntities>(); 

public IQueryable<MySqlType> GetData() 
     { 
      return _contextProvider.Context.TableA; 
     } 

} 

自动生成的代码中Designer.cs MySqlEntities:ObjectContext的

+0

MySqlEntities是从DbContext或ObjecContext派生的吗? – Pawel 2014-09-29 22:15:36

+0

ObjectContext。 Edmx – kay00 2014-09-30 14:31:45

回答

1

该提示是在错误消息:EFContextProvider期望一个兼容型 - 这可以转换为System.Data.Entity.DbContext ;不是你的MySqlEntities类型。

所以这行:

private readonly EFContextProvider<MySqlEntities> 
     _contextProvider = new EFContextProvider<MySqlEntities>(); 

库类应提供一个兼容的数据库环境。

见微风教程:http://www.breezejs.com/documentation/efcontextprovider

对于未来,它会更清楚,如果你阐述在代码什么MySqlEntities。

+0

中的Audto生成的代码是作为ObjectContext在edmx中自动生成的MySqlEntities。它必须是一个dbcontext? – kay00 2014-09-30 14:37:00

+0

感谢您指点我的文档。一旦我使用vs2013生成edmx,MySqlEntities是从DbContext派生的。 MySqlEntites从vs2010生成,从ObjectContext派生。该文档表明DbContext和ObjectContext都可以工作,但不是搞清楚它为什么不能,而是升级到使用DbContext。 – kay00 2014-09-30 15:56:45

相关问题