SORU
10 Kasım 2010, ÇARŞAMBA


Seri DateTime EntityFramework için

Benim uygulamada bir Varlık Çerçeve kullanıyorum.

Benim Tablo

-Article
-period
-startDate

= ^ Eşleşen kayıtları ihtiyacım var . DateTime.Now > startDate and (startDate period) > DateTime.Now

Ama şimdi onun çalışma bu kodu denedim

Context.Article
    .Where(p => p.StartDate < DateTime.Now)
    .Where(p => p.StartDate.AddDays(p.Period) > DateTime.Now)

(Varlıklar bu SERİ 'Sistemi.yöntemi tanımıyor benim özel Durum kodu çalıştırdığımda DateTime AddDays(Çift)' yöntemi, ve mağaza bir ifade tercüme edilemez bu yöntem.) oluşur.

CEVAP
10 Kasım 2010, ÇARŞAMBA


Varlık Çerçevesi bu SERİ kullanırken, tümcesi SQL tercüme Nereden içini ifade eder. Mantıklı DateTime.Add() SQL çevirisi yok çünkü hata yapıyorsun.

Hızlı bir çalışma-geçici belleğe ilk deyiminin sonuçlarını okuma ve Nesneleri bu SERİ filtreleme bitirmek için kullanın:

Context.Article.Where(p => p.StartDate < DateTime.Now)
               .ToList()
               .Where(p => p.StartDate.AddDays(p.Period) > DateTime.Now);

Ayrıca eğer kullanıyorsanız EntityFunctions.AddDays yöntemi deneyebilirsiniz .NET 4.0:

Context.Article.Where(p => p.StartDate < DateTime.Now)
               .Where(p => EntityFunctions.AddDays(p.StartDate, p.Period)
                   > DateTime.Now);

Not: EF 6 artık System.Data.Entity.DbFunctions.AddDays.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • george sarintzotis

    george sarin

    2 Aralık 2007
  • Submissions101

    Submissions1

    23 ŞUBAT 2007
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010