2015-07-21 79 views
0

我想将我的代码优先项目更改为SQL Server Compact 4.0。SQL Server Compact不支持'CreateTime'函数

但是我有以下LINQ表达

db.Test.OrderBy(t => t.Name) 
     .ThenBy(t => t.DayOfWeek) 
     .ThenBy(t => DbFunctions.CreateTime(t.TimeFrom.Hour, t.TimeFrom.Minute, t.TimeFrom.Second)) 

它引发以下错误

The function 'CreateTime' is not supported by SQL Server Compact

是否有写不使用CreateTime方法表达方式有问题?

+0

你可以尝试'ThenBy(T => t.TimeFrom.Hour * 3600 + t.TimeFrom.Minute * 60 + t.TimeFrom.Second )'? –

+0

谢谢。有效。 – Palmi

+0

另一个选择是使用'ThenBy(t => t.TimeFrom.Hour)。ThenBy(t => t.TimeFrom.Minute)。ThenBy(t => t.TimeFrom.Second)' –

回答

0

我在Sql Server Compact中使用代码优先。在我的模型中,我有一个名为TimeStamp类型DateTime的属性。在那我可以这样做:

db.Test.OrderBy(t => t.Name) 
    .ThenBy(t => t.TimeStamp.DayOfWeek) 
    .ThenBy(t => t.TimeStamp.Hour) 
    .ThenBy(t => t.TimeStamp.Minute) 
    .ThenBy(t => t.TimeStamp.Second) 
    .ThenBy(t => t.TimeStamp.Millisecond); 

db.Test.OrderBy(t => t.Name) 
    .ThenBy(t => t.TimeStamp.Ticks); 
+0

我得到错误:The指定类型成员'TimeOfDay'在LINQ to Entities中不受支持 – Palmi

+0

我编辑了我的答案以使用小时,分钟等代替TimeOfDay – jbriggs