Sto cercando di fare questo, ma dice che non posso usare FirstOrDefault,DbSet.FirstOrDefault()?
public static int GetId(this Context db, Type type, string name)
{
return db.Set(type).FirstOrDefault(x => x.Name == name).Id;
}
L'errore è 'System.Data.Entity.DbSet' non contiene una definizione per 'FirstOrDefault' e nessun metodo di estensione 'FirstOrDefault' accettare un primo argomento di tipo 'System.Data.Entity.DbSet' stato trovato (che le manca un un riferimento all'assembly direttiva using o?)
allora ho provato questo metodo, ma Cast
che ha dato un errore Impossibile creare un DbSe t da un DbSet non generico per oggetti di tipo 'WindowStyle' (indipendente tra WindowStyle
eredita da DomainEntity
sotto),
var set = db.Set(type).Cast<DomainEntity>();
return set.FirstOrDefault(x => x.Name == name).Id;
Ecco classe,
public class DomainEntity
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Ti hanno 'utilizzando System.Linq' nella parte superiore del file? DbSet eredita IEnumerable ma le funzioni LINQ sono tutti metodi di estensione e non saranno disponibili senza l'istruzione using. –
Il tuo secondo errore ('Cast') è un errore in fase di compilazione o in fase di esecuzione? Questo farà una grande differenza, ed è difficile da dedurre dalla tua domanda. –
@ Chris, sì, l'ho fatto. Buona domanda. – Benjamin