1

저는 VS2013, .NET4.5, EF6SQL 2008으로 작업하고 있습니다. 우리 팀의 개발자 중 하나가 필요 분리되어레코드를 업데이트 할 때 분리가 필요합니까?

if (!journey.WillAnswer.Any()) 
{ 
    db.WillAnswer.Add(willAnswer); 
} 
else 
{ 
    var will = db.WillAnswer.Single(x => x.Id == willAnswer.Id); 

    db.Detach(will); 
    db.WillAnswer.Attach(willAnswer); 
    db.Entry(willAnswer).State = EntityState.Modified; 
} 

db.SaveChanges(); 

if (!journey.WillAnswer.Any()) 
{ 
    db.WillAnswer.Add(willAnswer); 
} 
else 
{ 
    db.WillAnswer.Attach(willAnswer); 
    db.Entry(willAnswer).State = EntityState.Modified; 
} 

db.SaveChanges(); 

에서 모든 업데이트 문을 변경하는 것이

나는 나타났습니다? 좋은 습관입니까?

+2

왜 그가 그렇게했는지 물어 보셨습니까? –

답변

1

두 개의 will 개체가 동일한 키를 가지고있는 앱에 떠 다니기 때문에 그것은 확실히 나쁜 습관입니다. 그 중 하나는 분리 된 "더미"이며 단순히 작성된 모든 쓰기를 잃게됩니다. 이것은 오류가 발생하기 쉽고 혼란 스럽습니다.

앱이 EF를 사용하지 않는 것일 수 있습니다. 일반적으로 부착 및 분리가 전혀 필요하지 않습니다. EF 객체는 데이터베이스 상태를 나타내는 "실제"객체를 의미합니다. 그들은 당신이 자유롭게 만들고 버리는 DTO가 아닙니다. 특히 MyRepository.AddOrUpdate과 같은 일반적인 repo 메소드를 사용하지 마십시오.

엔티티에 쓰기를 원하면 가져 와서 작성하십시오. 업데이트 할 새 엔터티를 만들지 마십시오.

+0

나도 그렇게 생각했다. 알려지지 않은 미지의 하나 일 수있다. 감사. –

관련 문제