2011-01-28 27 views
8

bu kodu çalıştırarak sorgulamak:DateTime manipülasyon

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; 
      } 


     } 

bu hatayı alıyorum.

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

TotalTimeMin is int. Bunun neden olduğuna emin değilim: AssignmentDateTime DateTime? ve belki bu sorun mu?

+0

Sorun, LINQ-to-Entities'in DateTime.AddMinutes'ı datastore dilinize (muhtemelen SQL'e) nasıl çevireceğini bilmemesidir. Belki bu size doğru yönde işaret eder. Aslında sizin için bir çözüm bulmak için daha fazla zamana ihtiyacım var. –

+0

Teşekkürler, aslında biraz oynadım ve muhtemelen doğru, ne yaparsam yap, sorgunun içinde AddMinnute kullanamazsın (kolayca SQL ile yazabilirim ...) – Dani

cevap

16

Kullanım EntityFunctions.AddMinutes (EF 4 gerektirir): assignments olacak asla boş olması

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; 
     } 
    } 

Not (ama boş olabilir - testi assignments.Any()).

+0

Teşekkürler. (ToList'i ihmal ettim ve sayımı kontrol ettim ... ama EntityFunctions benim için yeni ve aradığım şey için yeni. – Dani

+3

Görünüşe göre EntityFunctions geçersiz. DbFunctions.AddMinutes() şimdi kullanılabilir (EF 6.x) . – UnreliableWitness