C# Breeze System.InvalidCastException与EntityFramework
无法获取数据。我可以在VisualStudio中看到数据。但是当我访问站点C# Breeze System.InvalidCastException与EntityFramework,c#,entity-framework,odata,breeze,C#,Entity Framework,Odata,Breeze,无法获取数据。我可以在VisualStudio中看到数据。但是当我访问站点mycomputername:21290/breeze/breeze/getdata时,我无法让web前端显示数据。我遇到此异常:无法将类型为“MySqlEntities”的对象强制转换为类型为“System.Data.Entity.DbContext” 我必须有odata控制器吗 public class BreezeController: ApiController { private readonly IReposi
mycomputername:21290/breeze/breeze/getdata
时,我无法让web前端显示数据。我遇到此异常:无法将类型为“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;
}
}
公共类BreezeController:ApiController
{
私人只读电子回购;
..
[HttpGet]
公共IEnumerable GetData()
{
返回_repo.GetData();
}
}
公共类存储库:IRepository
{
专用只读EFContextProvider
_contextProvider=新的EFContextProvider();
公共IQueryable GetData()
{
return_contextProvider.Context.TableA;
}
}
Designer.cs中自动生成的代码
MySqlEntities:ObjectContext错误消息中有提示:EFContextProvider需要一个兼容的类型-可以强制转换为System.Data.Entity.DbContext的类型;不是你的MySqlEntities类型 所以这一行:
private readonly EFContextProvider<MySqlEntities>
_contextProvider = new EFContextProvider<MySqlEntities>();
专用只读EFContextProvider
_contextProvider=新的EFContextProvider();
在您的存储库类中,应该提供一个兼容的db上下文
请参阅Breeze教程:
将来,如果您详细说明代码中的MySqlEntities是什么,就会更清楚。是从
DbContext
或ObjecContext
对象上下文派生的MySqlEntities
。edmxMySqlEntities中的Audto生成代码在edmx中作为ObjectContext自动生成。它必须是dbcontext?谢谢你给我指出文档。使用vs2013生成edmx后,MySqlEntities将从DbContext派生。MySqlEntites是从vs2010生成的,它是从ObjectContext派生的。文档表明DbContext和ObjectContext都可以工作,但我不想弄清楚为什么不能工作,而是想升级到使用DbContext。