使用EntityFramework的Breeze System.InvalidCastException

时间:2014-09-29 21:10:43

标签: c# entity-framework odata breeze

无法获取数据。我可以在visual studio中看到数据。但是,当我访问网站mycomputername:21290/breeze/breeze/getdata时,我可以通过网络前端显示数据。我得到了这个例外:无法转换类型' MySqlEntities'输入' System.Data.Entity.DbContext'。

我必须有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

1 个答案:

答案 0 :(得分:1)

提示位于错误消息中:EFContextProvider需要兼容类型 - 可以强制转换为System.Data.Entity.DbContext;不是你的MySqlEntities类型。

所以这一行:

private readonly EFContextProvider<MySqlEntities> 
        _contextProvider = new EFContextProvider<MySqlEntities>();
在您的存储库类中应该提供兼容的数据库上下文。

请参阅Breeze教程:http://www.breezejs.com/documentation/efcontextprovider

将来,如果你在代码中详细说明MySqlEntities是什么,那就更清楚了。