Я пытаюсь сделать это, но он говорит, что я не могу использовать FirstOrDefault,DbSet.FirstOrDefault()?
public static int GetId(this Context db, Type type, string name)
{
return db.Set(type).FirstOrDefault(x => x.Name == name).Id;
}
Ошибка «System.Data.Entity.DbSet» не содержит определения для «FirstOrDefault» и ни один из методов расширения «FirstOrDefault» принятие первого аргумента типа «System.Data.Entity.DbSet» может быть найдено (вы пропали без вести с помощью директивы или ссылка на сборку?)
затем я попробовал этот метод, но Cast
это сообщение об ошибке Невозможно создать DbSe т от необщего DbSet для объектов типа «Оформление_окна» (кстати WindowStyle
наследуется от DomainEntity
ниже),
var set = db.Set(type).Cast<DomainEntity>();
return set.FirstOrDefault(x => x.Name == name).Id;
Вот класс,
public class DomainEntity
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
ли вы 'используя System.Linq' в верхней части файла? DbSet наследует IEnumerable, но функции LINQ - это все методы расширения и не будут доступны без использования инструкции. –
Является ли ваша вторая ошибка ('Cast') ошибкой компиляции или времени выполнения? Это будет иметь большое значение, и из вашего вопроса трудно сделать вывод. –
@ Крис, да, я сделал. Хороший вопрос. – Benjamin