Entity framework 4 如何从Webapi Get返回IQueyrable DTO以便使用Odata过滤器
我试图在web api项目ASP.net MVC 4.0 RC中使用ODP.net和实体框架的Odata过滤器。我想把自己的发票退给你。我得到一个内部500错误,没有任何细节。我知道webapi RC存在错误生成错误,但我不认为这是我的问题Entity framework 4 如何从Webapi Get返回IQueyrable DTO以便使用Odata过滤器,entity-framework-4,asp.net-mvc-4,asp.net-web-api,odata,odp.net,Entity Framework 4,Asp.net Mvc 4,Asp.net Web Api,Odata,Odp.net,我试图在web api项目ASP.net MVC 4.0 RC中使用ODP.net和实体框架的Odata过滤器。我想把自己的发票退给你。我得到一个内部500错误,没有任何细节。我知道webapi RC存在错误生成错误,但我不认为这是我的问题 Get http://localhost:51744/api/Owner called using Fiddler [Queryable] public IQueryable<OwnDTO> Get()
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();
}
}
我不想使用Oracle EF生成的类(DAO)从Get返回,但我知道如果用更友好的接口替换EntityObject,我可以。如果我返回IEnumerable,它会工作,但我需要Odata过滤器
如果有人想要一个工作示例,请更新。。应该在linq中使用Automapper或simliar,并且应该注入上下文
[可查询]
公共IQueryable Get()
{
{
var query=来自Hack中的项。\u EFContext.owner
选择
新主人
{
Name=项目名称
};
返回query.AsQueryable();
}
}
这很好,但看起来Odata在RC后被移除了。因此,我需要搜索另一条路径。它在RC中确实有效,但在RTM中可能不起作用,当它发布时-还不太清楚 您的问题是,您正在处理上下文,因为您正在使用
using
块。因此,在检索数据之前,必须先处理上下文
因此,不要使用注册对象,以便在请求结束时进行处理。Tugberk有一个帖子。它确实在RC中工作,但当它发货时,可能在RTM中不工作-还不太清楚 您的问题是,您正在处理上下文,因为您正在使用
using
块。因此,在检索数据之前,必须先处理上下文
因此,不要使用注册对象,以便在请求结束时进行处理。Tugberk有一篇帖子。RTM中的[Queryable]属性似乎已消失。它在哪里?[Queryable]属性似乎已从RTM中消失。它在哪里?
public class OwnDTO
{
public string Name;
}
[Queryable]
public IQueryable<OwnDTO> Get()
{
{
var query = from item in Hack._EFContext.Owners
select
new OwnDTO
{
Name = item.Name
};
return query.AsQueryable();
}
}