EF 4:LINQ to Entities不支持指定的类型成员'*'

Sco*_*合理论 3 c# entity-framework

我有这样的映射类:

[Table("MyTable")]
class MyClass         
{   
        //properties; id, name, etc...

        private string _queuedToWHTime = string.Empty;
        [Column("QueuedToWHTime")]
        public string QueuedToWHTime
        {
            get { return _queuedToWHTime; }
            set { _queuedToWHTime = value; }
        }

        public DateTime? QueuedToWHTime_DateTime
        {
            get
            {
                if (!string.IsNullOrWhiteSpace(_queuedToWHTime))
                {
                    return Convert.ToDateTime(_queuedToWHTime);
                }
                return null;
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

和一个表(MyTable):

CREATE TABLE webnews_in
(
Id                INT NOT NULL auto_increment,
QueuedToWHTime    VARCHAR (50) NULL
...
PRIMARY KEY (Id)
);
Run Code Online (Sandbox Code Playgroud)

当我试图像这样查询:

var searchRslt=(from m in queryableNews
    orderby m.QueuedToWHTime_DateTime descending
    select m).ToList();
Run Code Online (Sandbox Code Playgroud)

我得到了NotSupportedException:LINQ to Entities不支持指定的类型成员'QueuedToWHTime_DateTime'.仅支持初始值设定项,实体成员和实体导航属性.

Maa*_*ten 5

您无法在自定义属性上使用EF查询.无法在SQL中转换自定义属性.

你可以这样做来强制orderby在'内存中'完成.

var searchRslt = queryableNews
    .AsEnumerable()
    .OrderBy(m => m.QueuedToWHTime_DateTime)
    .ToList();
Run Code Online (Sandbox Code Playgroud)