DbSet.FirstOrDefault()?

Ich versuche dies zu tun, aber es sagt, dass ich nicht verwenden können, FirstOrDefault,

public static int GetId(this Context db, Type type, string name)
{
    return db.Set(type).FirstOrDefault(x => x.Name == name).Id;
}

Den Fehler 'System.Daten.Entität.DbSet "enthält keine definition für "FirstOrDefault" und keine Erweiterung Methode "FirstOrDefault" die Akzeptanz der ein erstes argument vom Typ 'System.Daten.Entität.DbSet' gefunden werden konnte (fehlt eine using-Direktive oder ein Assemblyverweis?)

Dann habe ich versucht, dieses Cast Methode, aber das war ein Fehler Nicht DbSet von einer nicht-generischen DbSet für Objekte vom Typ 'WindowStyle' (btw WindowStyle erbt von DomainEntity unten),

var set = db.Set(type).Cast<DomainEntity>();
return set.FirstOrDefault(x => x.Name == name).Id;

Hier ist die Klasse,

public class DomainEntity
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}
Sie haben using System.Linq am Anfang der Datei? DbSet erbt IEnumerable aber die LINQ-Funktionen sind alle Extension-Methoden und wird nicht verfügbar sein, ohne die using-Anweisung.
Ist dein zweiter Fehler (Cast) einen Kompilier-oder Laufzeitfehler? Das wird einen großen Unterschied machen, und es ist schwer, Rückschlüsse auf Ihre Frage.
ja, habe ich. Gute Frage.
Es wurde Zeit, zeigt sich in meinem browser.

InformationsquelleAutor Benjamin | 2011-11-21

Schreibe einen Kommentar