2014-09-29 3 views
0

Не удается получить данные. Я вижу данные в визуальной студии. Но я могу создать веб-интерфейс, чтобы отображать данные, когда я перехожу на сайт 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; 
     } 

} 

Auto-генерируемый код в designer.cs MySqlEntities: ObjectContext

+0

Является ли 'MySqlEntities' производным от' DbContext' или 'ObjecContext'? – Pawel

+0

ObjectContext. Audto-сгенерированный код в edmx – kay00

ответ

1

Намек в сообщении об ошибке: EFContextProvider ожидает совместимый тип - то, что можно бросить в System.Data.Entity.DbContext ; не ваш тип MySqlEntities.

Так эта линия:

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

в вас Repository класс должен быть обеспечен с совместимым контексте дб.

Смотрите Breeze учебники: http://www.breezejs.com/documentation/efcontextprovider

Для будущего, было бы понятнее, если вы разработали, что MySqlEntities в коде.

+0

MySqlEntities автоматически генерируется в edmx как ObjectContext. Это должен быть dbcontext? – kay00

+0

Спасибо, что указали мне на документацию. Когда я использую vs2013 для генерации edmx, MySqlEntities происходит от DbContext. MySqlEntites был создан из vs2010 как полученный из ObjectContext. В документации указывается, что будут работать как DbContext, так и ObjectContext, но вместо того, чтобы понять, почему это не так, я хорошо разбираюсь в том, чтобы вместо этого использовать DbContext. – kay00

Смежные вопросы