2013-11-02 4 views
0

Я последовал пост здесь, чтобы настроить мой WCF службы данных с Entity Framework 6.0: http://blogs.msdn.com/b/astoriateam/archive/2013/10/02/using-wcf-data-services-5-6-0-with-entity-framework-6.aspxслужбы WCF Data 5.6 с Entity Framework 6.0 Сложные типы

После преобразования DataService в EntityFrameworkDataService, я не могу скомпилировать мой проект, и это связано с тем, что мой вызов CurrentDataSource не переводит все методы в моем Контексте. С обычным DataService мне удалось вызвать метод CurrentDataSource.getEmployees(), и все сработало нормально. Однако с новым EntityFrameworkDataService getEmployees() больше не доступен. Что мне здесь не хватает?

+0

Похоже, что я не единственный с этой проблемой ... https://social.msdn.microsoft.com/Forums/en-US/59aba0c8-25bc-4c67-b1c8-f2086fe94dfa/56ef6actions-broken? forum = adodotnetdataservices –

+0

[Отчет о релевантной проблеме] (https://data.uservoice.com/forums/72027-wcf-data-services-feature-suggestions/suggestions/4734171-retrieve-dbcontext-in-entityframeworkdataservice) (ранее ответ , но удалено, поскольку оно содержит только ссылку). – tne

ответ

0

Мы решаем это, создавая DBContext, сохраняя его в свойстве класса обслуживания, а затем вводим его в поставщика услуг. Затем, в любое время, когда мы хотим его использовать, мы получаем доступ к свойству.

protected override EntityFrameworkDataServiceProvider2<CustomDBContext> CreateDataSource() 
{ 

    var dbContext = ContextHelper.GetContext(); 

    this.DBContext = dbContext; 

    // Get the underlying ObjectContext for the DBContext. 
    var context = ((IObjectContextAdapter)this.DBContext).ObjectContext; 
    context.ContextOptions.ProxyCreationEnabled = false; 

    // Return the underlying context. 
    var args = new DataServiceProviderArgs(this, dbContext, {}, false); 

    var provider = new EntityFrameworkDataServiceProvider2<CustomDBContext>(args); 

    return provider; 

} 

Где CustomDBContext - это название вашего контекста.

Затем замените все ваши вызовы на CurrentDataSource с помощью этого.DBContext.