спасибо за решение :)
ий наЛучший способ проверить, существует ли объект в 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. Поскольку сущности могут иметь разные ключи, я не могу их всех наследовать от общего реферата с известным ключом для сравнения.
Я мог бы сделать это, но я беспокоюсь о производительности перехвата исключений в качестве процесса проверки Это также не работает, так как до тех пор, покаOriginalValues
собственность не может быть получена:
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;
}
}