我正在尝试在 Web api 项目 ASP.NET MVC 4.0 RC 中使用 ODP.net 和实体框架的 Odata 过滤器。我想返回一个 IQueryable 的 OwnDTO 。我收到一个内部 500 错误,没有任何详细信息。我知道 webapi RC 存在错误生成错误,但我不认为该错误是我的问题。
Get http://localhost:51744/api/Owner called using Fiddler
[Queryable]
public IQueryable<OwnDTO> Get()
{
using (Entities context = new Entities())
{
var query = from item in context.Owners
select
new OwnDTO
{
Name = item.Name
};
return query.AsQueryable();
}
}
//非常简单的例子
public class OwnDTO
{
public string Name;
}
我不想使用我的 Oracle EF 生成的类 (DAO) 从我的 Get 返回,但我知道如果我用更友好的界面替换 EntityObject 可以。如果我返回 IEnumerable 它可以工作,但我想要 Odata 过滤器。
更新以防有人想要一个工作示例。应该在 linq 中使用 Automapper 或类似的,并且应该注入上下文。
[Queryable]
public IQueryable<OwnDTO> Get()
{
{
var query = from item in Hack._EFContext.Owners
select
new OwnDTO
{
Name = item.Name
};
return query.AsQueryable();
}
}
这很好用,但看起来 Odata 在 RC 之后被删除了。所以我需要寻找另一条路。