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

  • DavideoDesign

    DavideoDesig

    24 NİSAN 2006
  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011