ObjectContext.Refresh 메서드

정의

개체 컨텍스트의 특정 개체를 데이터 소스의 데이터로 업데이트합니다.Updates specific objects in the object context with data from the data source.

오버로드

Refresh(RefreshMode, IEnumerable)

개체 컨텍스트의 개체 컬렉션을 데이터 소스의 데이터로 업데이트합니다.Updates a collection of objects in the object context with data from the data source.

Refresh(RefreshMode, Object)

개체 컨텍스트의 개체를 데이터 소스의 데이터로 업데이트합니다.Updates an object in the object context with data from the data source.

설명

개체를 새로 고치는 순서는 비결 정적입니다.The order in which objects are refreshed is nondeterministic.

Refresh(RefreshMode, IEnumerable)

개체 컨텍스트의 개체 컬렉션을 데이터 소스의 데이터로 업데이트합니다.Updates a collection of objects in the object context with data from the data source.

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 값입니다.A RefreshMode value that indicates whether property changes in the object context are overwritten with property values from the data source.

collection
IEnumerable

새로 고칠 개체의 IEnumerable 컬렉션입니다.An IEnumerable collection of objects to refresh.

예외

collection이(가) null인 경우collection is null.

refreshMode가 잘못된 경우refreshMode is not valid.

collection가 비어 있는 경우collection is empty.

또는-or-

개체가 컨텍스트에 연결되지 않은 경우An object is not attached to the context.

설명

이 메서드에는 개체 컨텍스트의 개체를 데이터 소스의 데이터로 새로 고칠 수 있도록 허용 하 고 충돌을 해결할 수 있는 메커니즘이 있습니다.This method has the dual purpose of allowing objects in the object context to be refreshed with data from the data source, and being the mechanism by which conflicts can be resolved. 자세한 내용은 변경 내용 저장 및 동시성 관리합니다.For more information, see Saving Changes and Managing Concurrency.

개체를 새로 고치는 순서는 비결 정적입니다.The order in which objects are refreshed is nondeterministic.

Refresh가 호출 된 후 개체의 원래 값은 항상 데이터 원본 값으로 업데이트 되지만 현재 값은 데이터 원본 값으로 업데이트 될 수도 있고 업데이트 되지 않을 수도 있습니다.After Refresh is called, the object's original values will always be updated with the data source value, but the current values might or might not be updated with the data source value. 이 값은 값에 따라 달라 집니다 RefreshMode .This depends on the RefreshMode value. StoreWins모드는 컬렉션의 개체가 데이터 원본 값과 일치 하도록 업데이트 되어야 함을 의미 합니다.The StoreWins mode means that the objects in the collection should be updated to match the data source values. ClientWins 데이터 원본에 다른 변경 내용이 있어도 개체 컨텍스트의 변경 내용만 유지 됨을 의미 합니다.ClientWins means that only the changes in the object context will be persisted, even if there have been other changes in the data source.

개체를 데이터 원본 측 논리에 따라 업데이트 하려면 Refresh 메서드를 호출한 후를 사용 하 여를 호출 하면 StoreWins SaveChanges 됩니다.To ensure that objects have been updated by data source-side logic, you can call Refresh with StoreWins after you call the SaveChanges method.

추가 정보

적용 대상

Refresh(RefreshMode, Object)

개체 컨텍스트의 개체를 데이터 소스의 데이터로 업데이트합니다.Updates an object in the object context with data from the data source.

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 값 중 하나입니다.One of the RefreshMode values that specifies which mode to use for refreshing the ObjectStateManager.

entity
Object

새로 고칠 개체입니다.The object to be refreshed.

예외

collection이(가) null인 경우collection is null.

refreshMode가 잘못된 경우refreshMode is not valid.

collection가 비어 있는 경우collection is empty.

또는-or-

개체가 컨텍스트에 연결되지 않은 경우An object is not attached to the context.

예제

이 예제는 Microsoft SQL Server 제품 샘플: 데이터베이스를 기반으로 합니다.This example is based on the Microsoft SQL Server Product Samples: Database. 이 예제에서는 변경 내용을 저장 하려고 시도 하며,이로 인해 동시성 충돌이 발생할 수 있습니다.The example tries to save changes, and this may cause a concurrency conflict. 그런 다음 변경 내용을 다시 저장 하기 전에 개체 컨텍스트를 새로 고쳐 동시성 충돌을 해결 하는 방법을 보여 줍니다.Then it shows how to resolve the concurrency conflict by refreshing the object context before re-saving changes.

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());
    }
}
Using context As New AdventureWorksEntities()
    Try
        ' Perform an operation with a high-level of concurrency. 
        ' Change the status of all orders without an approval code. 
        Dim orders As ObjectQuery(Of SalesOrderHeader) = context.SalesOrderHeaders.Where("it.CreditCardApprovalCode IS NULL").Top("100")

        For Each order As SalesOrderHeader In orders
            ' Reset the order status to 4 = Rejected. 
            order.Status = 4
        Next
        Try
            ' Try to save changes, which may cause a conflict. 
            Dim num As Integer = context.SaveChanges()
            Console.WriteLine("No conflicts. " & num.ToString() & " updates saved.")
        Catch generatedExceptionName As 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")
        End Try

        For Each order As SalesOrderHeader In orders
            Console.WriteLine(("Order ID: " & order.SalesOrderID.ToString() & " Order status: ") + order.Status.ToString())
        Next
    Catch ex As UpdateException
        Console.WriteLine(ex.ToString())
    End Try
End Using

설명

Refresh 에는 데이터 원본의 데이터로 개체를 새로 고치고 충돌을 해결할 수 있는 메커니즘을 허용 하는 두 가지 용도가 있습니다.Refresh has the dual purpose of allowing an object to be refreshed with data from the data source and being the mechanism by which conflicts can be resolved. 자세한 내용은 변경 내용 저장 및 동시성 관리합니다.For more information, see Saving Changes and Managing Concurrency.

개체를 새로 고치는 순서는 비결 정적입니다.The order in which objects are refreshed is nondeterministic.

메서드를 Refresh 호출한 후에는 개체의 원래 값이 항상 데이터 원본 값으로 업데이트 되지만 현재 값은 데이터 원본 값으로 업데이트 될 수도 있고 업데이트 되지 않을 수도 있습니다.After the Refresh method is called, the object's original values will always be updated with the data source value, but the current values might or might not be updated with the data source value. 이것은에 따라 달라 집니다 RefreshMode .This depends on the RefreshMode. StoreWins모드는 개체가 데이터 원본 값과 일치 하도록 업데이트 되어야 함을 의미 합니다.The StoreWins mode means that the object should be updated to match the data source values. ClientWins값은 데이터 원본에 다른 변경 내용이 있어도 개체 컨텍스트의 변경 내용만 유지 됨을 의미 합니다.The ClientWins value means that only the changes in the object context will be persisted, even if there have been other changes in the data source.

개체를 데이터 원본 측 논리에 따라 업데이트 하려면 Refresh 메서드를 호출한 후 값을 사용 하 여 메서드를 호출 하면 StoreWins SaveChanges 됩니다.To ensure that an object has been updated by data source-side logic, you can call the Refresh method with the StoreWins value after you call the SaveChanges method.

추가 정보

적용 대상