0

次のように EF 5 エンティティがアタッチされているかどうかを判断しようとしています。

最初にこのメソッドが呼び出されます。

public bool IsAttached(object entity)
{
    EntityKey entityKey = GetEntityKey(entity);

    if (entityKey == null)
        return false;

    return IsAttached(this.AsObjectContext(), entityKey);
}

このメソッドを呼び出すもの:

public EntityKey GetEntityKey(object entity)
{
    ObjectStateEntry objectStateEntry;
    if (null != entity && this.AsObjectContext().ObjectStateManager.TryGetObjectStateEntry(entity, out objectStateEntry))
    {
        return objectStateEntry.EntityKey;
    }
    return null;
}

IsAttached() メソッドが false を返す場合、このメソッドが呼び出されます。

        var attachedEntity = context.Set<TEntity>().Attach(entity);

私が直面している問題は、オブジェクトが既にアタッチされている場合でも、null を返すIsAttached()ため、メソッドが常に false を返すことです。GetEntityKey()IOW、エンティティがアタッチされている場合でも、エンティティ キーを取得できないため、すべてが失敗します。誰かが私が間違っていることを見ることができますか?

最初にコードではなく、EF 5 を使用しています。

4

1 に答える 1

0

そのコードの大部分は必要ありません...使用するだけです

if (context.Entry(entity).State == EntityState.Detached)
于 2013-06-20T19:36:08.917 に答える