我目前正在使用WCF服务应用程序,我们已根据实体框架的Object Context创建了每个请求。在实体框架查询中,我们使用了Complied Query机制,但是,目前无法实现预期的性能。我怀疑它是由于对象上下文的性质(基于每个请求),因为Complied查询依赖于对象上下文。是这样吗?
代码示例
private static readonly Func<MyContext, IQueryable<Order>> _compiledObjectQuery = CompiledQuery.Compile<MyContext, IQueryable<Order>>(
(ctx) => from Order in ctx.Orders
.Include("OrderType")
.Include("OrderLines")
select Order
);
protected override IQueryable<Order> OrderQuery
{
get { return _compiledObjectQuery.Invoke(Context); }
}
上下文创建
public OPDbContext DbContext
{
get
{
if(_dbConext == null)
{
_dbConext = new OPDbContext(Context, true);
}
return _dbConext;
}
}
Castle用于为每个请求库注入对象上下文