반응형
MVC에서 EntityFrameWork 를 사용하다 보면, 데이터를 업데이트할 때 다음과 같은 오류를 확인 할 수 있습니다.
EntityFramework Error
동일한 유형의 다른 엔티티가 이미 동일한 기본 키 값을 가지고 있기 때문에 { ‘Attach’메서드를 사용하거나 엔티티의 상태를 ‘Unchanged’또는 ‘Modified’로 설정하면 { ”xxxx ‘유형의 엔티티를 연결하는 데 실패했습니다. ‘그래프에있는 엔티티 중 하나의 엔티티가 충돌하는 키 값을 가지고있는 경우 이는 일부 엔티티가 새롭고 아직 데이터베이스 생성 키 값을받지 못했기 때문일 수 있습니다이 경우’추가 ‘메소드 또는’추가됨 ‘엔티티 상태를 사용하여 그래프를 작성한 다음 비 신규 엔티티의 상태를 ‘변경되지 않음’또는 ‘수정 됨’으로 설정하십시오.”
위 오류는 동시성 오류라고도 하는데 다음 링크를 확인해보면 좋을 것 같습니다.
파트 10: Entity Framework를 이용한 동시성 충돌 제어
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();
}
반응형
'.Net' 카테고리의 다른 글
.NET/MVC - LINQ Compare DateTime (0) | 2024.02.23 |
---|---|
.NET/C# - CS1555-Main 메서드에 지정된을(를) 찾을 수 없습니다. (0) | 2024.02.20 |
MVC - MYSQL, 최대 길이가 ‘250’인 문자열 또는 배열 형식이어야 합니다. (0) | 2024.02.20 |
MVC/.NET - 조건에 따라 다른 CSS를 보여주고자 할 때 (0) | 2024.02.19 |
.NET - HtmlAgilityPack SelectNodes에서 다중 클래스 찾기 contains (0) | 2022.11.11 |