спасибо за решение :)

ий наЛучший способ проверить, существует ли объект в 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;
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос