2011-01-28 16 views
8

を照会:DateTimeの操作は、このコードを実行している

public bool CheckTime(DateTime date, int UserID, int TotalTimeMin) 
     { 
      using (var context = new myDB()) 
      {   
       var assginments = from c in context.Assignments.Where(x=>(x.AssignmentDateTime < date && x.AssignmentDateTime.Value.AddMinutes(TotalTimeMin) > date) || 
        (x.AssignmentDateTime < date.AddMinutes(TotalTimeMin))) select c; 

       if(assginments != null) return false; 
       else return true; 
      } 


     } 

私はこのエラーを取得します。

LINQ to Entities does not recognize the method 'System.DateTime AddMinutes(Double)' method, and this method cannot be translated into a store expression. 

TotalTimeMinはintです。私はこの原因を確認していません: AssignmentDateTimeはDateTimeですか?多分これは問題ですか?

+0

問題は、LINQ-to-EntitiesがDateTime.AddMinutesをデータストア言語(おそらくSQL)に変換する方法を知らないことです。たぶん正しい方向に向けるでしょう。私は実際にあなたのための解決策を見つけるために多くの時間が必要になります。 –

+0

ありがとう、私は実際にそれをちょっと試してみましたが、私が何をするにしても、クエリ内でAddMinnuteを使用することはできません(SQLで簡単に書くことはできますが...) – Dani

答えて

16

使用EntityFunctions.AddMinutesは(EF 4が必要です):assignments意志決してがnullになることを

public bool CheckTime(DateTime date, int UserID, int TotalTimeMin) 
    { 
     using (var context = new myDB()) 
     {   
      var assginments = context.Assignments 
            .Where(x=>(x.AssignmentDateTime < date 
               && EntityFunctions.AddMinutes(x.AssignmentDateTime,TotalTimeMin) > date) 
               || (x.AssignmentDateTime < date.AddMinutes(TotalTimeMin))); 

      if(assginments != null) return false; 
      else return true; 
     } 
    } 

注意(それが空である可能性があります - テストassignments.Any())。

+0

ありがとう。 (私はToListを省略してカウントを確認しましたが、EntityFunctionsは新しく、私が探していたものです – Dani

+3

Entity関数は廃止されました。DbFunctions.AddMinutes()now(EF 6.x) 。 – UnreliableWitness

関連する問題