C# .Execute在类型安全实体框架查询中不可用(包括&;where)

C# .Execute在类型安全实体框架查询中不可用(包括&;where),c#,.net,entity-framework,entity-framework-4.1,entity-framework-5,C#,.net,Entity Framework,Entity Framework 4.1,Entity Framework 5,我有一个关于实体框架查询的问题 我有一个查询,它使用EF提供的扩展方法,所以我可以使用类型安全的includes和where子句。但是,由于Include带有lambda参数,因此它是iQueryTable上的一个扩展方法,返回iQueryTable以链接像Where这样的方法。包含字符串参数是ObjectQuery上返回ObjectQuery的方法。Execute是ObjectQuery上的一个方法,不是IQueryable,因此在使用IQueryable方法时它不可用 是否有方法调用。但使用

我有一个关于实体框架查询的问题

我有一个查询,它使用EF提供的扩展方法,所以我可以使用类型安全的includes和where子句。但是,由于Include带有lambda参数,因此它是iQueryTable上的一个扩展方法,返回iQueryTable以链接像Where这样的方法。包含字符串参数是ObjectQuery上返回ObjectQuery的方法。Execute是ObjectQuery上的一个方法,不是IQueryable,因此在使用IQueryable方法时它不可用

是否有方法调用。但使用IQueryable执行?

返回
this.Storage.Customer.of type()
.包括(b=>b.顺序)
.Where(cust=>cust.Id==customerId&&cust.CustomerType==(int)cusType)
.SingleOrDefault();

谢谢,

我已经找到了,也许有人可以评论一下这是否是一种好的做法

        var query =             
            this.Storage.Tubes.OfType<Preferred>()
                        .Include(b  => b.Order);

        return ((ObjectQuery<Preferred>)query).Execute(MergeOption.OverwriteChanges)
                                               .SingleOrDefault(cust => cust.Id == customerId && cust.CustomerType == (int)cusType);
var查询=
这是()类型的.Storage.Tubes.of
.包括(b=>b.顺序);
return((ObjectQuery)query.Execute(MergeOption.OverwriteChanges)
.SingleOrDefault(cust=>cust.Id==customerId&&cust.CustomerType==(int)cusType);

您想做什么?我想调用.Execute with a Merge选项,但当您在where和include中使用lambdas(使用扩展方法)时,此选项不可用。仅当您将字符串用于include和where。。。
        var query =             
            this.Storage.Tubes.OfType<Preferred>()
                        .Include(b  => b.Order);

        return ((ObjectQuery<Preferred>)query).Execute(MergeOption.OverwriteChanges)
                                               .SingleOrDefault(cust => cust.Id == customerId && cust.CustomerType == (int)cusType);