staram się to zrobić, ale ona mówi, że nie można używać FirstOrDefault,DbSet.FirstOrDefault()?
public static int GetId(this Context db, Type type, string name)
{
return db.Set(type).FirstOrDefault(x => x.Name == name).Id;
}
Błąd znajduje „System.Data.Entity.DbSet” nie zawierają definicji „FirstOrDefault” i żadna metoda rozszerzenie „FirstOrDefault” przyjęcie pierwszego argumentu typu „System.Data.Entity.DbSet” można odnaleźć (czy brakuje using dyrektywa lub odwołania do zestawu?)
następnie próbowałem tej metody Cast
ale który dał błąd Nie można utworzyć DbSe T z nierodzajowego DbSet dla obiektów typu „WindowStyle” (zresztą WindowStyle
dziedziczy DomainEntity
poniżej)
var set = db.Set(type).Cast<DomainEntity>();
return set.FirstOrDefault(x => x.Name == name).Id;
Oto klasy
public class DomainEntity
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Czy masz 'używając System.Linq' na początku pliku? DbSet dziedziczy IEnumerable, ale funkcje LINQ są wszystkimi metodami Extension i nie będą dostępne bez instrukcji using. –
Czy Twój drugi błąd ("Cast") jest błędem podczas kompilacji lub wykonywania? To zrobi dużą różnicę i ciężko wywnioskować z twojego pytania. –
@Chris, tak, zrobiłem. Dobre pytanie. – Benjamin