Sql server 2008 无法对我的EF4数据执行ORDERBY

Sql server 2008 无法对我的EF4数据执行ORDERBY,sql-server-2008,visual-studio-2010,linq-to-entities,entity-framework-4,Sql Server 2008,Visual Studio 2010,Linq To Entities,Entity Framework 4,我有一个使用STE的查询命中EF4,我对用户定义的排序有问题。在调试过程中,我删除了动态排序并对其进行了硬编码,但仍然存在这个问题。如果我交换/取消注释getmybusinesss()中的var results=xxx行,我的结果排序不会有任何不同-它们总是按升序排序 仅供参考,Name是我的业务表上SQL 2008中的varchar(200)字段 private IQueryable<Business> GetMyBusinesses(MyDBContext CurrentCont

我有一个使用STE的查询命中EF4,我对用户定义的排序有问题。在调试过程中,我删除了动态排序并对其进行了硬编码,但仍然存在这个问题。如果我交换/取消注释
getmybusinesss()
中的
var results=xxx
行,我的结果排序不会有任何不同-它们总是按升序排序

仅供参考,
Name
是我的业务表上SQL 2008中的
varchar(200)
字段

private IQueryable<Business> GetMyBusinesses(MyDBContext CurrentContext)
{

    var myBusinesses = from a in CurrentContext.A
                       join f in CurrentContext.F
                           on a.FID equals f.id
                       join b in CurrentContext.Businesses
                           on f.BID equals b.id
                       where a.PersonID == 52
                       select b;

    var results = from r in myBusinesses
              orderby "Name" ascending
              select r;

    //var results = from r in results
    //          orderby "Name" descending
    //          select r;

    return results;
}

private PartialEntitiesList<Business> DoStuff()
{
    var myBusinesses = GetMyBusinesses();
    var myBusinessesCount = GetMyBusinesses().Count();

    Results = new PartialEntitiesList<Business>(myBusinesses.Skip((PageNumber - 1)*PageSize).Take(PageSize).ToList())
                  {UnpartialTotalCount = myBusinessesCount};

    return Results;
}

public class PartialEntitiesList<T> : List<T>
{
    public PartialEntitiesList()
    {
    }

    public PartialEntitiesList(int capacity) : base(capacity)
    {
    }

    public PartialEntitiesList(IEnumerable<T> collection) : base(collection)
    {
    }

    public int UnpartialTotalCount { get; set; }
}
private IQueryable GetMyBusinesss(MyDBContext-CurrentContext)
{
var mybusinesss=来自CurrentContext.a中的
在CurrentContext.f中加入f
关于a.FID等于f.id
在CurrentContext.business中加入b
关于f.BID等于b.id
其中a.PersonID==52
选择b;
var结果=来自MyBusiness中的r
orderby“Name”升序
选择r;
//var results=来自结果中的r
//orderby“Name”降序
//选择r;
返回结果;
}
私有PartialTitiesList DoStuff()
{
var mybusinesss=getmybusinesss();
var myBusinessesCount=getmybusinesss().Count();
结果=新建PartialTitiesList(MyBusinesss.Skip((PageNumber-1)*PageSize.Take(PageSize.ToList())
{unparatialtotalcount=myBusinessesCount};
返回结果;
}
公共类PartialTitiesList:List
{
公共部分资格列表()
{
}
公共PartialTitiesList(内部容量):基本(容量)
{
}
公共PartialTitiesList(IEnumerable集合):基本(集合)
{
}
public int unparaltotalcount{get;set;}
}

显然将
OrderBy
子句作为字符串是无效的(我以为我以前已经测试过了?!)。如果我将Linq查询更改为以下内容,则它将正常工作:

var results = from r in myBusinesses
          orderby r.Name ascending
          select r;

这并不能解决我的问题,但它确实回答了这个特定的问题。我将发布另一个与我的问题相关的问题。

STE?自我跟踪实体?@Craig:对不起,那是我正在使用的动态工具的遗留工件。我已经修改了代码来删除它。@Steven:是的,STE=自跟踪实体。在返回结果之前,请在调试器中对结果进行评估。对吗?如果是这样的话,其他的东西正在改变其他地方的排序。@Craig:我所做的是无效的语法,不会引发异常。:/请看下面我的答案。它不是无效的;这不是你所期望的
orderby“Name”
编译为需要ESQL的
.orderby(“Name”)
“Name”
无效,但
“it.Name”
无效。所以,
orderby“it.Name”
可能真的能用。@Craig:其实我很久以前就试过类似于
“it”+“Name”
的东西了,但运气不好。我假设将字符串添加在一起不会影响它的有效性?不,这不会有任何影响。这里的关键观点是,语言集成查询(
orderby
)和方法调用(
.orderby
)编译为相同的内容。