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

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Electro Posé

    Electro Pos

    21 ŞUBAT 2013
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008