다음을 통해 공유


ObjectContext.Refresh 메서드

정의

개체 컨텍스트의 특정 개체를 데이터 소스의 데이터로 업데이트합니다.

오버로드

Refresh(RefreshMode, IEnumerable)

개체 컨텍스트의 개체 컬렉션을 데이터 소스의 데이터로 업데이트합니다.

Refresh(RefreshMode, Object)

개체 컨텍스트의 개체를 데이터 소스의 데이터로 업데이트합니다.

설명

개체를 새로 고치는 순서는 비결정적입니다.

Refresh(RefreshMode, IEnumerable)

개체 컨텍스트의 개체 컬렉션을 데이터 소스의 데이터로 업데이트합니다.

public:
 void Refresh(System::Data::Objects::RefreshMode refreshMode, System::Collections::IEnumerable ^ collection);
public void Refresh (System.Data.Objects.RefreshMode refreshMode, System.Collections.IEnumerable collection);
member this.Refresh : System.Data.Objects.RefreshMode * System.Collections.IEnumerable -> unit
Public Sub Refresh (refreshMode As RefreshMode, collection As IEnumerable)

매개 변수

refreshMode
RefreshMode

개체 컨텍스트의 속성 변경 내용을 데이터 소스의 속성 값으로 덮어쓸지 여부를 나타내는 RefreshMode 값입니다.

collection
IEnumerable

새로 고칠 개체의 IEnumerable 컬렉션입니다.

예외

collection이(가) null인 경우

refreshMode가 잘못된 경우

collection가 비어 있는 경우

또는

개체가 컨텍스트에 연결되지 않은 경우

설명

이 메서드는 개체 컨텍스트의 개체를 데이터 원본의 데이터로 새로 고칠 수 있도록 하고 충돌을 해결할 수 있는 메커니즘이 되도록 하는 이중 목적을 가지고 있습니다. 자세한 내용은 변경 내용 저장 및 동시성 관리합니다.

개체를 새로 고치는 순서는 비결정적입니다.

가 호출된 후 Refresh 개체의 원래 값은 항상 데이터 원본 값으로 업데이트되지만 현재 값은 데이터 원본 값으로 업데이트되거나 업데이트되지 않을 수 있습니다. 값에 RefreshMode 따라 달라집니다. 모드는 StoreWins 데이터 원본 값과 일치하도록 컬렉션의 개체를 업데이트해야 했음을 의미합니다. ClientWins 는 데이터 원본에 다른 변경 내용이 있더라도 개체 컨텍스트의 변경 내용만 유지됨을 의미합니다.

개체가 데이터 원본 쪽 논리에 의해 업데이트되었는지 확인하려면 메서드를 호출한 후 를 StoreWins 호출 RefreshSaveChanges 할 수 있습니다.

추가 정보

적용 대상

Refresh(RefreshMode, Object)

개체 컨텍스트의 개체를 데이터 소스의 데이터로 업데이트합니다.

public:
 void Refresh(System::Data::Objects::RefreshMode refreshMode, System::Object ^ entity);
public void Refresh (System.Data.Objects.RefreshMode refreshMode, object entity);
member this.Refresh : System.Data.Objects.RefreshMode * obj -> unit
Public Sub Refresh (refreshMode As RefreshMode, entity As Object)

매개 변수

refreshMode
RefreshMode

RefreshMode를 새로 고치는 데 사용할 모드를 지정하는 ObjectStateManager 값 중 하나입니다.

entity
Object

새로 고칠 개체입니다.

예외

collection이(가) null인 경우

refreshMode가 잘못된 경우

collection가 비어 있는 경우

또는

개체가 컨텍스트에 연결되지 않은 경우

예제

이 예제에서는 변경 내용을 저장하려고 시도하며 이로 인해 동시성 충돌이 발생할 수 있습니다. 그런 다음, 변경 내용을 다시 저장하기 전에 개체 컨텍스트를 새로 고쳐 동시성 충돌을 해결하는 방법을 보여줍니다.

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    try
    {
        // Perform an operation with a high-level of concurrency.
        // Change the status of all orders without an approval code.
        ObjectQuery<SalesOrderHeader> orders =
            context.SalesOrderHeaders.Where(
            "it.CreditCardApprovalCode IS NULL").Top("100");

        foreach (SalesOrderHeader order in orders)
        {
            // Reset the order status to 4 = Rejected.
            order.Status = 4;
        }
        try
        {
            // Try to save changes, which may cause a conflict.
            int num = context.SaveChanges();
            Console.WriteLine("No conflicts. " +
                num.ToString() + " updates saved.");
        }
        catch (OptimisticConcurrencyException)
        {
            // Resolve the concurrency conflict by refreshing the
            // object context before re-saving changes.
            context.Refresh(RefreshMode.ClientWins, orders);

            // Save changes.
            context.SaveChanges();
            Console.WriteLine("OptimisticConcurrencyException "
            + "handled and changes saved");
        }

        foreach (SalesOrderHeader order in orders)
        {
            Console.WriteLine("Order ID: " + order.SalesOrderID.ToString()
                + " Order status: " + order.Status.ToString());
        }
    }
    catch (UpdateException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

설명

Refresh 에는 개체를 데이터 원본의 데이터로 새로 고칠 수 있고 충돌을 해결할 수 있는 메커니즘이 되는 이중 목적이 있습니다. 자세한 내용은 변경 내용 저장 및 동시성 관리합니다.

개체를 새로 고치는 순서는 비결정적입니다.

메서드가 Refresh 호출된 후 개체의 원래 값은 항상 데이터 원본 값으로 업데이트되지만 현재 값은 데이터 원본 값으로 업데이트되거나 업데이트되지 않을 수 있습니다. 이는 에 RefreshMode따라 달라집니다. 모드는 StoreWins 데이터 원본 값과 일치하도록 개체를 업데이트해야 했음을 의미합니다. 값은 ClientWins 데이터 원본에 다른 변경 내용이 있더라도 개체 컨텍스트의 변경 내용만 유지됨을 의미합니다.

개체가 데이터 원본 쪽 논리에 의해 업데이트되었는지 확인하려면 메서드를 호출한 Refresh 후 값을 사용하여 StoreWins 메서드를 SaveChanges 호출할 수 있습니다.

추가 정보

적용 대상