2012-07-17 13 views
5

yalnızca temel tipi sütunlarından seçip vardır:varlık Framework tablo - şöyle bir nesne modelini Biz ilk EF 4.3 Kod kullanan

class Content { } 

class Product:Content { } 

class News:Content { } 

Bu Tür başına Tablo olarak eşlenir.

Yalnızca temel tablonun tüm sütunlarının bir listesini vermek gibi temel tabloya ait sütunları yüklemek istediğim senaryolar var. Ancak

gibi bir sorgu, diğer iki tabloya katılan bazı gerçekten kötü SQL sonuçlarıyla sonuçlanır. EF'yi sadece diğer tablolara katılmadan temel tablodan seçim yapmak için zorlamanın bir yolu var mı?

cevap

3

TPT sorunludur ve EF tarafından oluşturulan sorgular genellikle çok verimsizdir. Üstelik beklentileriniz muhtemelen yanlıştır. Linq-to-varlıklar her zaman gerçek varlık türünü döndürür. Kayıt aslında Product öğesinin olması durumunda, Content türünün örneğini döndüremez. Sorgunuz yalnızca iki anlam ifade edebilir:

  • Silinmeyen tüm içeriği geri döndürün - bu, gerçek bir varlık türünü doğru şekilde başlatmak için birleşimler gerçekleştirmelidir. Sorgu, Content, Product ve News örneklerinin numaralandırılmasını döndürecektir. Muhtemelen yine bu zorunluluk doğru (Product ve News ilişkin olmaksızın) doğrudan Content eşleştirilmiş sadece kayıtları örneğini katılır gerçekleştirmek -
  • Dönüş olmayan tüm Content örneklerini silindi. Product veya News ile eşlenen hiçbir kayıt numaralandırmada iade edilir. Bu sorgu Linq-to-entities ile mümkün değildir - ESQL ve OFTYPE ONLY operatörünü kullanmanız gerekir.

birkaç şey deneyebilirsiniz vardır:

  • Yükseltme .NET 4.5 için - TPT
  • Dönüş özelliklerinin projeksiyon yerine Content sorgular için bazı gelişmeler vardır - Product ve News da içeriğidir Böylece, Content örneklerini Linq'den varlıklar sorgu
+0

'a döndürdüğünüzde hiçbir zaman katılım olmadan sorguyu alamazsınız. tepki. Gelecek ay hayata geçecek olan, üzerinde çalıştığımız mevcut projenin 4.5'e yükseltilmesi söz konusu değil. Kayıtlı provalarla bu tür sorguları yapmayı planlıyoruz. – madaboutcode

İlgili konular