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

  • cdgotx

    cdgotx

    8 Kasım 2011
  • Le Cargo !

    Le Cargo !

    24 HAZİRAN 2007
  • Mega64

    Mega64

    24 ŞUBAT 2006