2015-07-21 54 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