DBContext 평등 :엔티티 프레임 워크 - 나는 기존 DBContext이 때문에 같은 지역 변수에 할당 된 코드의 비트를 상속 한
using(var context = new DBContext())
{
try
{
...
var localContext = context;
MethodThatAddsStuffToContext(localContext);
...
}
catch etc. etc.
context.SaveChanges();
}
내 질문은 : 나는 다른 컨텍스트가 자신의 변화를 유지 것이라는 점을 알고있다 그들이 후에 만 다른 상황에 의해 포착 될 것이라는 저장하지만, :
- 은 컨텍스트가
context
이상localContext
이 같은 추가 사항을 공유하고, 하나를 절약 다른 변경 사항을 커밋 것을 의미, 참조 평등를 사용하십니까 ? - 두 개의 기존 별도 컨텍스트가 있고 하나만 저장하면 이후의 모든 쿼리에서 새 컨텍스트에서 변경 내용이 자동으로 선택되거나 해당 컨텍스트가 만들어지는 시점에서 컨텍스트 "캐시"가 수행됩니다. 이것에 대한 대답은 전자이지만 명확히하고 싶다)?
- 코드 스 니펫이 나쁜 습관입니까? 내가 권하는 어떤 상황도 생각할 수 없다.
컨텍스트와 localContext는 DBContext의 동일한 인스턴스를 가리키는 두 개의 변수입니다.그래서 당신은 그들이 뭔가를 "공유"하거나 그들이 "분리되어있다"고 말할 수 없습니다. 두 가지가 아니라 여기에 하나의 컨텍스트가 있습니다. – Evk
@Evk, 그럼 참조 평등은? 그게 내가 묻는 전부 야. DBContexts, 즉 질문에 대한 .Equals의 동작에 대한 설명서는 어디에서도 찾을 수 없습니다. 나는 왜 어떤 사람이 이전의 건축가가 가치 평등이 아니라면 무엇을했는지 이유를 알 수 없었다. –
클래스 작성자가 어떻게 든이 동작을 변경하지 않는 한 모든 클래스 (구조체 아님)는 기본적으로 참조 동등성을 사용합니다. 그러나 DbContext에 대해 가치 평등을 사용하는 것은 전혀 의미가 없으므로 그 의미가 무엇인지 상상할 수 없습니다. 또한 제공 한 코드 스 니펫에서 변수를 복사하는 것은 의미가 없습니다. – Evk