Как Лучший способ проверить, существует ли объект в Entity Framework?
Я ищу общий способ проверки объекта в DbSet
. Что-то вроде этого, что не работает:
private DbContext DbContext { get; set; }
private DbSet<T> DbSet { get; set; }
public Boolean Exists(T entity) {
return ((from item in this.DbSet
where item == entity
select item).Count() > 0);
}
Строка where item == entity
работает в LINQ to SQL, но, видимо, не с LINQ to Entities. Поскольку у сущностей могут быть разные ключи, я не могу их наследовать от общего абзаца с известным ключом для сравнения.
Я мог бы это сделать, но я беспокоюсь о производительности catching exceptions в качестве процесса проверки. Это не работает ни с тех пор, пока объект не отсоединен, свойство OriginalValues
может 't:
public Boolean Exists(T entity) {
try {
var current = this.DbContext.Entry(entity).OriginalValues;
// Won't reach this line if the entity isn't in the database yet
return true;
}
catch (Exception ex) {
return false;
}
}