MVC 응용 프로그램에서 DAL 용 리포지토리 패턴을 사용하고 있습니다.레코드를 업데이트하는 동안 저장소 패턴이 예외가 발생합니다.
이제 엔티티 레코드를 하나 선택하고 엔티티 필드 값을 업데이트하고 업데이트 작업을 수행 할 때 오류가 발생합니다.
동일한 유형의 다른 엔터티 이 이미 동일한 기본 키 값을 가지고 있기 때문에 'DAL.User'유형의 엔터티를 연결하지 못했습니다. '첨부'방법을 사용하거나 엔티티의 상태를 '변경되지 않음'또는 '수정 됨'으로 설정할 때 충돌하는 키 값이있는 경우 이 발생합니다. 이는 일부 엔티티가 새롭고 이 아직 데이터베이스 생성 키 값을 수신하지 않았기 때문일 수 있습니다. 이 경우 'Add'메소드 또는 'Added'엔티티 상태를 사용하여 그래프를 추적하고 이 아닌 새 엔티티의 상태를 '변경되지 않음'또는 'Modified'로 설정하십시오. "} System.Exception
탈취 층 라이브러리에서 : 관리자 클래스 :다음과 같이 호출private readonly IUnitOfWork _unitOfWork; private IRepository <User , int> UserRepository { get { return _unitOfWork.GetRepository<AccountUser, int>(); } } public void UpdateUserEntity(UserDTO u) { try { User model = new User(); UserRepository.Update(Mapper.Map(u, model)); _unitOfWork.SaveChanges(); } catch (Exception ex) { throw; } }
public void Update(TEntity entity) { if (_context.Entry(entity).State != EntityState.Modified) { _dbSet.Attach(entity); _context.Entry(entity).State = EntityState.Modified; } }
: 아래
는 저장소 물건
위의 오류를 해결할 수있는 방법을 안내해주세요.
어디에서 오는 Update() 메소드의 Tentity 인수는 어디에 있습니까? 데이터베이스에서 읽고 수정 한 객체가 데이터베이스에 다시 저장하려고합니까? 또는 애플리케이션의 일부 웹 엔드 포인트에 데이터를 게시하여 생성 된 모델 객체입니까? –
관리자 레이어 항목에 대한 udated 질문을 찾으십시오. – user3711357
[ASP.NET MVC - 같은 유형의 다른 엔터티가 이미 기본 키 값이 같기 때문에 'MODELNAME'유형의 엔터티를 연결하지 못했습니다.] (http://stackoverflow.com/questions/23201907/asp-net-mvc-attached-an-type-of-model-name-failed-another-ent/39557606 # 39557606)을 사용하는 것이 좋습니다. –