Sql server 2008 无法对我的EF4数据执行ORDERBY
我有一个使用STE的查询命中EF4,我对用户定义的排序有问题。在调试过程中,我删除了动态排序并对其进行了硬编码,但仍然存在这个问题。如果我交换/取消注释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
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
)编译为相同的内容。