次の方法で共有


ObjectContext.CreateEntityKey(String, Object) メソッド

定義

特定のオブジェクトのエンティティ キーを作成するか、エンティティ キーが既に存在する場合はそのエンティティ キーを返します。

public:
 System::Data::EntityKey ^ CreateEntityKey(System::String ^ entitySetName, System::Object ^ entity);
public System.Data.EntityKey CreateEntityKey (string entitySetName, object entity);
member this.CreateEntityKey : string * obj -> System.Data.EntityKey
Public Function CreateEntityKey (entitySetName As String, entity As Object) As EntityKey

パラメーター

entitySetName
String

エンティティ オブジェクトが属しているエンティティ セットの完全修飾名。

entity
Object

エンティティ キーを取得するオブジェクト。

戻り値

オブジェクトの EntityKey です。

例外

いずれかのパラメーターが null の場合。

entitySetName が空の場合。

- または -

entity オブジェクトの型がエンティティ セットに存在しない場合。

- または -

entitySetName が完全修飾されていない場合。

指定されたパラメーターに基づいてエンティティ キーを正常に作成できない場合。

この例では、CreateEntityKey を使用して既存のオブジェクトのエンティティ キーを取得します。

private static void ApplyItemUpdates(SalesOrderDetail updatedItem)
{
    // Define an ObjectStateEntry and EntityKey for the current object.
    EntityKey key = default(EntityKey);
    object originalItem = null;

    using (AdventureWorksEntities context = new AdventureWorksEntities())
    {
        // Create the detached object's entity key.
        key = context.CreateEntityKey("SalesOrderDetails", updatedItem);

        // Get the original item based on the entity key from the context
        // or from the database.
        if (context.TryGetObjectByKey(key, out originalItem))
        {
            // Call the ApplyCurrentValues method to apply changes
            // from the updated item to the original version.
            context.ApplyCurrentValues(key.EntitySetName, updatedItem);
        }

        context.SaveChanges();
    }
}

注釈

EntityKeyに が存在しない場合、entityメソッドはCreateEntityKey新しいキーを作成します。

このメソッドは、同じ EntityKey を持つオブジェクトが既に ObjectContext にアタッチされているかどうかを確認するために使用されます。 同じ EntityKey を持つオブジェクトが既にアタッチされている場合は、例外が発生します。 CreateEntityKey メソッドを使用して、デタッチしたオブジェクトの EntityKey を取得してから、Attach メソッドを呼び出してください。

適用対象