Обнаруживать, если объект привязан к datacontext

У меня есть процедура, в которой мне нужно сохранить объект объекта. Проблема в том, что я не знаю, привязан ли этот объект к моему datacontext или нет. Для этого я использую следующий код:

try
{
    db.ClientUsers.Attach(clientUser);
    db.Refresh(RefreshMode.KeepCurrentValues, clientUser);
}
catch { }

db.SubmitChanges(); 

Я ищу лучший метод для определения того, принадлежит ли сущность к контексту, а также проверять, привязан ли объект к определенному контексту.

Ответы

Ответ 1

Интересно, что делает GetOriginalEntityState возврат для не присоединенного объекта? Даже если он выдает исключение, он, вероятно, будет быстрее, чем обновление...

(обновление) - тест показывает, что он возвращает null:

        Customer cust = new Customer();
        Customer orig = ctx.Customers.GetOriginalEntityState(cust);
        Assert.IsNull(orig);

        cust = new Customer();
        ctx.Customers.Attach(cust);
        orig = ctx.Customers.GetOriginalEntityState(cust);
        Assert.IsNotNull(orig);
        Assert.AreNotSame(cust,orig);

Поэтому, возможно, используйте GetOriginalEntityState и проверьте нулевое возвращаемое значение...