programing

Entity Framework 6에서 분리 된 엔터티 저장

copyandpastes 2021. 1. 14. 23:36
반응형

Entity Framework 6에서 분리 된 엔터티 저장


Entity Framework에서 분리 된 엔터티를 저장하는 방법에 대한 많은 게시물을 읽었습니다. 모두 이전 버전의 Entity Framework에 적용되는 것 같습니다. 그들은 존재하지 않는 것으로 보이는 ApplyCurrentValues ​​및 ChangeObjectState와 같은 메서드를 참조합니다. 변덕에 나는 intellisense를 통해 찾은 방법을 시도하기로 결정했고 이것이 장면 뒤에서 일어나는 일을 볼 수 없기 때문에 이것이 올바른 방법인지 확인하고 싶습니다.

public void SaveOrder(Order order)
{
    using (VirtualWebEntities db = new VirtualWebEntities())
    {
        db.Orders.Attach(order);
        db.Entry(order).State = System.Data.Entity.EntityState.Modified;
        db.SaveChanges();
    }
}

변경된 기존 항목을 업데이트하는 올바른 방법입니까?


네, 맞습니다. 이 문서에서는 엔티티를 추가하고 연결하는 다양한 방법에 대해 설명 하고 다음 예제를 제공합니다.

var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" };
using (var context = new BloggingContext())
{
    // The next step implicitly attaches the entity
    context.Entry(existingBlog).State = EntityState.Modified;
    // Do some more work...
    context.SaveChanges();
}

EF는 데이터베이스의 속성과 다른 속성을 알지 못하므로 모두 업데이트합니다.

상태를 Modified로 변경하면 엔티티의 모든 속성이 수정 된 것으로 표시되고 SaveChanges가 호출 될 때 모든 속성 값이 데이터베이스로 전송됩니다.

이를 방지하려면 전체 엔터티 상태를 설정하는 대신 수동으로 수정할 속성을 설정할 수 있습니다 .

using (var context = new BloggingContext())
{
    var blog = context.Blogs.Find(1);
    context.Entry(blog).Property(u => u.Name).IsModified = true;     
    // Use a string for the property name
    context.Entry(blog).Property("Name").IsModified = true;
}

참조 URL : https://stackoverflow.com/questions/20451461/save-detached-entity-in-entity-framework-6

반응형