여기 내 prblemEF 핵심 인 removeRange 항목
using (var db = new CassaContext()) {
var DbSet = db.GetByName(item.Name);
DbSet.RemoveRange(DbSet);
for (var i = 0; i < data.Count; i++)
{
JObject jitem = data[i] as JObject;
var dbobj = vm.Db.JsonToObject(jitem);
DbSet.Add(dbobj);
}
db.SaveChanges();
}
내가 removeRange를() istruction 후 db.SaveChanges()를 추가 할 경우, 모든 것을하지 않고, 나는 오류를 가지고 괜찮지 만의 트랜잭션에 제거되지
개체 유형의 인스턴스는 '사용자'는 이미 가 추적되고 동일한 키와 때문에이 유형의 다른 인스턴스를 추적 할 수 없습니다. 새 항목을 추가 할 때 키가 설정되지 않은 경우 (즉, 속성에 해당 유형의 기본값이 할당 된 경우) 대부분의 키 유형에 대해 임시 키 값이 생성됩니다. 새 엔터티에 대한 키 값을 명시 적으로 설정하는 경우 이 기존 엔터티와 충돌하거나 다른 새 엔터티에 대해 생성 된 임시 값과 충돌하지 않는지 확인하십시오. 기존 엔티티를 첨부 할 때는 지정된 키 값을 가진 하나의 엔티티 인스턴스 만 컨텍스트에 연결되어 있는지 확인하십시오.
트랜잭션이 실패한 경우 빈 테이블이 없기 때문에 removerange 이후에 저장하지 않으려합니다.
어떻게 해결할 수 있습니까? 미리 감사드립니다! 더 많은 정보가 필요하면 꼭 물어보십시오!
예외는 매우 분명하다 : * 동일한 키를 가진이 유형의 다른 인스턴스가 이미 * 추적하고있다. 방금 제거한 엔티티를 추가합니다. –
그리고 무엇이 문제입니까? EF7에서도 작업하고있었습니다. 데이터베이스에 엔티티를 삽입하고 제거 할 수 있다고 가정합니다. – thepasto