У меня возникла проблема с возвратом при возврате того, что я считал IQueryable из операции службы, но, очевидно, это DbQuery.
Обновление: я основываю часть своего кода (ServiceOp, возвращая IEnumerable) из поста Скотта Хансельмана здесь :
[WebGet]
public IQueryable<Post> GetPopularPosts()
Я настроил базовую службу данных WCF. Согласно ошибке обновления , я определил ее как:
public class Api : DataService<ObjectContext>
, а не как из TestDb. Я устанавливаю CreateDataSource () как:
protected override ObjectContext CreateDataSource()
{
var testDb = new TestDb();
var objectContext = ((IObjectContextAdapter)testDb).ObjectContext;
objectContext.ContextOptions.ProxyCreationEnabled = false;
return objectContext;
}
В моем методе InitializeService я вызываю:
config.SetServiceOperationAccessRule("GetStuff", ServiceOperationRights.AllRead);
А моя сервисная операция:
[WebGet]
public IQueryable<Stuff> GetStuff()
{
var context = new TestDb();
return context.Stuff;
}
Проблема в том, что, хотя метод завершается, а context.Stuff содержит элементы, сервер возвращает ошибку:
An error occurred while processing this request. Exception has been thrown by the target of an invocation. System.Reflection.TargetInvocationException
...
Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery' to type 'System.Linq.IQueryable`
Есть мысли по этому поводу?