Entity Framework 4 개체 관리: ObjectContext.AddObject 및 Attach 메서드에 대한 자세한 설명
Entity Framework 4는 컨텍스트에서 개체를 관리하는 두 가지 방법을 제공합니다. 새 개체를 추가하기 위한 ObjectContext.AddObject
및 ObjectSet.AddObject
, 기존 개체를 표시하기 위한 ObjectContext.Attach
및 ObjectSet.Attach
입니다. 이름은 유사하지만 객체 수명주기 관리에서는 매우 다른 역할을 수행합니다.
ObjectContext.AddObject 및 ObjectSet.AddObject: 객체의 탄생
새 엔터티로 작업할 때는 ObjectContext.AddObject
및 ObjectSet.AddObject
을 사용하세요. 이러한 메서드는 데이터베이스에 아직 존재하지 않는 개체를 컨텍스트에 추가합니다. 새로 추가된 엔터티는 임시 EntityKey 및 추가된 EntityState를 가져옵니다. SaveChanges
을 호출한 후 프레임워크는 이러한 개체를 데이터베이스에 삽입해야 하는 엔터티로 인식합니다.
ObjectContext.Attach 및 ObjectSet.Attach: 기존 개체에 대한 연결
AddObject
과 달리 ObjectContext.Attach
, ObjectSet.Attach
은 데이터베이스에 이미 존재하는 객체에 사용됩니다. Attach
EntityState를 Added로 설정하는 대신 Unchanged로 설정하여 객체가 컨텍스트에 연결된 이후 변경되지 않은 상태로 유지됨을 나타냅니다. Attach
으로 표시된 엔터티는 해당 EntityKey 값을 일치시켜 데이터베이스에서 발견되며, SaveChanges
이 호출되면 그에 따라 업데이트되거나 삭제됩니다.
Attach 메소드의 실제 적용 예
AddObject
은 새 엔터티를 만드는 데 사용되는 반면 Attach
은 기존 개체로 작업할 때 유용합니다. 예를 들어 기존 Person 엔터티를 컨텍스트의 기존 Address 엔터티에 연결하려면 다음을 수행합니다.
<code class="language-csharp">var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name == "Joe Bloggs"); var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID); existingPerson.Addresses.Attach(myAddress); // 或: myAddress.PersonReference.Attach(existingPerson); ctx.SaveChanges();</code>
Attach
작업은 Address 엔터티가 기존 엔터티로 인식되고 Person 엔터티에 연결되어 올바른 데이터베이스 업데이트 또는 삭제 작업이 가능하도록 보장합니다.
위 내용은 Entity Framework 4의 AddObject와 Attach: 각 메서드를 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!