EntityFramework – 동일한 형식의 다른 엔터티의 기본 키 값이 이미 동일하므로…

MVC에서 EntityFrameWork 를 사용하다 보면, 데이터를 업데이트할 때 다음과 같은 오류를 확인 할 수 있습니다.

동일한 유형의 다른 엔티티가 이미 동일한 기본 키 값을 가지고 있기 때문에 { ‘Attach’메서드를 사용하거나 엔티티의 상태를 ‘Unchanged’또는 ‘Modified’로 설정하면 { ”xxxx ‘유형의 엔티티를 연결하는 데 실패했습니다. ‘그래프에있는 엔티티 중 하나의 엔티티가 충돌하는 키 값을 가지고있는 경우 이는 일부 엔티티가 새롭고 아직 데이터베이스 생성 키 값을받지 못했기 때문일 수 있습니다이 경우’추가 ‘메소드 또는’추가됨 ‘엔티티 상태를 사용하여 그래프를 작성한 다음 비 신규 엔티티의 상태를 ‘변경되지 않음’또는 ‘수정 됨’으로 설정하십시오. ”

EntityFramework Error

위 오류는 동시성 오류라고도 하는데 다음 링크를 확인해보면 좋을 것 같습니다.

http://www.egocube.pe.kr/translation/content/asp-net-mvc-5-ef-6-tutorial-1/201606200001

다만 기술적으로 ID와 같은 고유한 키가 있다면 Detached 후 Modified 하는 방법으로 진행이 가능합니다.

다음과 같이 ID를 통해 해당 키를 찾은 후 Detached를 진행합니다.
그후 Modified를 하고 SaveChanges를 통해 DB에 반영하면 됩니다.

using (var db = new itdbEntities())
{
	var local = db.Set<alerttable>()
	.Local.FirstOrDefault(f => f.id == alertdata.id);
	if (local != null)
	{
		db.Entry(local).State = EntityState.Detached;
	}
	db.Entry(alertdata).State = EntityState.Modified;
	db.SaveChanges();
}
Facebook Comments

Leave A Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.