2013-03-28 11 views
5

Ich versuche einige Kategorien aufzulisten (Eltern-Kind-Beziehung), und ich habe den folgenden Befehl nur übergeordneten Kategorien zur ListeEF-Code Erste Nullwerte zu vergleichen erzeugt seltsame Abfrage

context.Categories.Where(c => c.ParentId == null) 

Aber die SQL-Abfrage von EF erzeugt kehrt nicht alles

sQL-Abfrage, die von EF

SELECT 
CAST(NULL AS int) AS [C1], 
CAST(NULL AS varchar(1)) AS [C2], 
CAST(NULL AS bit) AS [C3], 
CAST(NULL AS int) AS [C4] 
FROM (SELECT 1 AS X) AS [SingleRowTable1] 
WHERE 1 = 0 

Kategorie Modell

Mapping

public class CategoryConfiguration : EntityTypeConfiguration<Category> 
{ 
    public CategoryConfiguration() 
    { 
    ToTable("tbl_category"); 
    HasKey(c => c.Id); 
    Property(c => c.Id).HasColumnName("cd_category"); 
    Property(c => c.Name).HasColumnName("ds_category"); 
    Property(c => c.IsActive).HasColumnName("fl_active"); 
    Property(c => c.ParentId).HasColumnName("cd_base_category").IsOptional(); 
    HasMany(c => c.SubCategories).WithRequired(c => c.Parent).HasForeignKey(c => c.ParentId); 
    } 
} 
+0

@caerolus ja EF erzeugt wird, dass –

+0

Verwenden '(c =>! C.ParentId.HasValue)' – Fendy

+0

@Fendy die gleiche Abfrage uns –

Antwort

0

Ich poste dies als eine Antwort, weil sicherlich eine davon funktioniert:

Ihre ParentId Eigenschaft muss public virtual sein - versuchen, die ersten zu ändern.

Dann versuchen context.Categories.Where(c => !c.ParentId.HasValue)

, dann context.Categories.Where(c => c.Parent == null)

Ich habe Anwendungen versuchen, in dem die oben gut funktioniert.

Dann versuchen context.Categories.Where(c => object.Equals(c.Parent, null))

Das letzte ein bit of a hack from someone at MS ist, sollte aber anscheinend arbeiten.

Verwandte Themen