Table<TEntity>.Attach 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
DataContext에 엔터티를 연결합니다.
오버로드
Attach(TEntity) |
낙관적 동시성 검사를 위해 원래 값이 필요한 경우 연결이 끊기거나 "분리된" 엔터티를 새 DataContext에 연결합니다. |
Attach(TEntity, Boolean) |
엔터티를 수정된 상태나 수정되지 않은 상태로 DataContext에 연결합니다. |
Attach(TEntity, TEntity) |
엔터티 및 원래 상태를 모두 지정하여 엔터티를 수정되거나 수정되지 않은 상태로 DataContext에 연결합니다. |
설명
Attach
에서 DataContext만든 엔터티와 함께 메서드를 사용하고, 클라이언트에 직렬화된 다음, 다시 역직렬화합니다(업데이트 또는 삭제 작업을 수행하려는 의도). 자세한 내용은 데이터 검색 및 CUD 작업에서 N 계층 애플리케이션 (LINQ to SQL)합니다.
serialization을 Attach
통해 분리되지 않은 엔터티를 시도하지 마세요. 직렬화되지 않은 엔터티는 엔터티가 두 번째 데이터 컨텍스트에 의해 추적될 경우 예기치 않은 결과를 초래할 수 있는 지연된 로더와의 연결을 유지 관리합니다.
새 엔터티가 연결되면 모든 자식 컬렉션(예 EntitySet
: 연결된 테이블의 엔터티 컬렉션)에 대한 지연 로더가 초기화됩니다.
SubmitChanges 가 호출되면 자식 컬렉션의 멤버가 상태에 놓입니다Unmodified
. 자식 컬렉션의 멤버를 업데이트하려면 명시적으로 를 호출 Attach
하고 해당 엔터티를 지정해야 합니다.
Attach
는 제공된 개체의 개체 그래프에 있는 모든 엔터티를 연결합니다. 예를 들면 다음과 같습니다.
using (var db = new SampleDataContext())
{
var employee = new Employee { employeeId = 1 };
var master = new Master();
master.Employee = employee;
var child = new Child();
child.Employee = employee;
db.Employees.Attach(employee);
master.Child = child;
db.Masters.InsertOnSubmit(master);
db.SubmitChanges();
}
Using db As New SampleDataContext()
Dim employee As New Employee With { .employeeId = 1 }
Dim master As New Master()
master.Employee = employee
Dim child As New Child()
child.Employee = employee
db.Employees.Attach(employee)
master.Child = child
db.Masters.InsertOnSubmit(master)
db.SubmitChanges()
End Using
에 Employee
를 호출 Attach
하면 직원, master 및 자식이 연결됩니다. 왜냐하면 Employee
은 master 자식과 관계가 있기 때문입니다. 명시적으로 를 호출 InsertOnSubmit
하여 상태를 연결된 에서 삽입됨으로 변경해야 합니다.
Attach(TEntity)
낙관적 동시성 검사를 위해 원래 값이 필요한 경우 연결이 끊기거나 "분리된" 엔터티를 새 DataContext에 연결합니다.
public:
void Attach(TEntity entity);
public:
virtual void Attach(TEntity entity);
public void Attach (TEntity entity);
member this.Attach : 'Entity -> unit
abstract member Attach : 'Entity -> unit
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)
매개 변수
- entity
- TEntity
연결할 엔터티의 원래 값입니다.
구현
설명
Attach
에서 DataContext만든 엔터티와 함께 메서드를 사용하여 클라이언트에 직렬화된 다음 다시 역직렬화하여 업데이트 또는 삭제 작업을 수행합니다. 새 DataContext 는 연결이 끊긴 엔터티에 대한 원래 값을 추적할 방법이 없으므로 클라이언트는 해당 값을 제공할 책임이 있습니다. 이 버전의 Attach에서는 엔터티가 원래 값 상태인 것으로 간주됩니다. 이 메서드를 호출한 후 해당 필드를 업데이트할 수 있습니다(예: 클라이언트에서 전송된 추가 데이터).
새 엔터티가 연결되면 모든 자식 컬렉션(예 EntitySet
: 연결된 테이블의 엔터티 컬렉션)에 대한 지연 로더가 초기화됩니다.
SubmitChanges 가 호출되면 자식 컬렉션의 멤버가 상태에 놓입니다Unmodified
. 자식 컬렉션의 멤버를 업데이트하려면 명시적으로 를 호출 Attach
하고 해당 엔터티를 지정해야 합니다.
자세한 내용은 데이터 검색 및 CUD 작업에서 N 계층 애플리케이션 (LINQ to SQL)합니다.
serialization을 Attach
통해 분리되지 않은 엔터티를 시도하지 마세요. 직렬화되지 않은 엔터티는 엔터티가 두 번째 데이터 컨텍스트에 의해 추적될 경우 예기치 않은 결과를 초래할 수 있는 지연된 로더와의 연결을 유지 관리합니다.
적용 대상
Attach(TEntity, Boolean)
엔터티를 수정된 상태나 수정되지 않은 상태로 DataContext에 연결합니다.
public:
void Attach(TEntity entity, bool asModified);
public void Attach (TEntity entity, bool asModified);
member this.Attach : 'Entity * bool -> unit
Public Sub Attach (entity As TEntity, asModified As Boolean)
매개 변수
- entity
- TEntity
연결할 엔터티입니다.
- asModified
- Boolean
수정된 엔터티를 연결하려면 true
이고, 수정되지 않은 엔터티를 연결하려면 false
입니다.
설명
수정된 것으로 연결하는 경우 엔터티는 버전 멤버를 선언하거나 업데이트 충돌 검사에 참여해서는 안 됩니다. 새 엔터티가 연결되면 모든 자식 컬렉션(예 EntitySet
: 연결된 테이블의 엔터티 컬렉션)에 대한 지연 로더가 초기화됩니다.
SubmitChanges 가 호출되면 자식 컬렉션의 멤버가 상태에 놓입니다Unmodified
. 자식 컬렉션의 멤버를 업데이트하려면 명시적으로 를 호출 Attach
하고 해당 엔터티를 지정해야 합니다.
적용 대상
Attach(TEntity, TEntity)
엔터티 및 원래 상태를 모두 지정하여 엔터티를 수정되거나 수정되지 않은 상태로 DataContext에 연결합니다.
public:
void Attach(TEntity entity, TEntity original);
public void Attach (TEntity entity, TEntity original);
member this.Attach : 'Entity * 'Entity -> unit
Public Sub Attach (entity As TEntity, original As TEntity)
매개 변수
- entity
- TEntity
연결할 엔터티입니다.
- original
- TEntity
원래 값이 들어 있는 데이터 멤버와 엔터티 형식이 같은 인스턴스입니다.
예제
using (Northwnd db2 = new Northwnd(@"c:\northwnd.mdf"))
{
Customer Cust_File = new Customer();
string xmlFile = "";
// Get the original object from the deserializer.
Customer c = SerializeHelper.Deserialize<Customer>
(xmlFile, Cust_File);
// Set all the desired properties to the entity to be attached.
Customer c_updated = new Customer() { CustomerID = c.CustomerID,
Phone = "425-123-4567", CompanyName = "Microsoft" };
db2.Customers.Attach(c_updated, c);
// Perform last minute updates, which will still take effect.
c_updated.Phone = "425-765-4321";
// SubmitChanges()sets the phoneNumber and CompanyName of
// customer with customerID=Cust. to "425-765-4321" and
// "Microsoft" respectively.
db2.SubmitChanges();
}
Using db = New Northwnd("...")
Dim Cust_File As New Customer()
Dim xmlFile As String = ""
'Get the original object from the deserializer.
Dim c As Customer = SerializeHelper.Deserialize(Of Customer)(xmlFile, Cust_File)
' Set all the desired properties to the entity to be attached.
Dim c_updated As New Customer With {.CustomerID = c.CustomerID, _
.Phone = "425-123-4567", .CompanyName = "Microsoft"}
db.Customers.Attach(c_updated, c)
' Perform last minute updates, which will still take effect.
c_updated.Phone = "425-765-4321"
' SubmitChanges()sets the phoneNumber and CompanyName of
' customer with customerID=Cust. to "425-765-4321" and
' "Microsoft" respectively.
db.SubmitChanges()
End Using
설명
다음 예제에서는 개체가 Customer
이미 올바르게 구성되어 있습니다. 업데이트를 재생하지 않고도 를 호출 Attach
할 수 있습니다.
새 엔터티가 연결되면 모든 자식 컬렉션(예 EntitySet
: 연결된 테이블의 엔터티 컬렉션)에 대한 지연 로더가 초기화됩니다.
SubmitChanges 가 호출되면 자식 컬렉션의 멤버가 상태에 놓입니다Unmodified
. 자식 컬렉션의 멤버를 업데이트하려면 명시적으로 를 호출 Attach
하고 해당 엔터티를 지정해야 합니다.
적용 대상
.NET