다른 개체의 가상 컬렉션을 보유하고있는 개체가 있습니다. 내가 새로 삽입 된 개체에 대한 가상 컬렉션을 채워 데이터를 삽입하려고하면 같은 키를 가진 개체가 이미 존재한다는 오류가 발생합니다.같은 키를 가진 객체가 이미 존재합니다 objectstatemanager
엔티티를 만들지 않으면 0 값의 ID 필드를 갖게된다는 것을 알고 있습니다. 하지만 메인 테이블에 데이터를 저장할 때 데이터 컬렉션을 저장해야합니다.
public virtual void Insert(TEntity entity)
{
((IObjectState)entity).ObjectState = ObjectState.Added;
entityDbSet.Attach(entity);
dataContext.SyncObjectState(entity);
}
이것은 내가 사용하고있는 삽입 방법입니다. 아래는이 작업을위한 poco 클래스 (데이터 컬렉션을 유지하기 위해 클래스를 확장하기위한 부분 구현)입니다.
public partial class UserDefinedData
{
public int ID { get { return this.UserSelectedDValueID; } set { this.UserSelectedDValueID = value; } }
public string Name { get { return this.entityTypeName; } }
public virtual AM_AssetLocations AM_AssetLocations { get; set; }
}
public partial class AM_AssetLocations
{
// Reverse navigation
public virtual ICollection<UserDefinedData> UserDefinedDatas { get; set; }
}
json을 사용하여 데이터를 전달합니다. 또한 올바른 것으로 보인다. 데이터의 가상 컬렉션이 엔티티에 올바르게 추가되기 때문입니다.
{"entity":{"ID":"0","CreatedByID":"0","CreatedDate":"04-13-2014 10:48","ModifiedByID":"","ModifiedDate":"","DeletedByID":"","DeletedDate":"","Deleted":"false","Name":"h","Active":"true","DisplayOrder":"0","Test Decimal":"10","":"","Test Number":"10","Test Plain Text":"h","Test RTF":"<p>hsj</p>","Test Yes No":"false","Test Yes No 2":"true","TestDate":"01-Apr-2014","TestDateTime":"10:00 AM","UserDefinedDatas":[{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"123","ValueNumber":"10"},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"124","ValueListItemID":"25"},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"122","ValueNumber":"10"},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"117","ValueString":"h"},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"119","ValueString":"<p>hsj</p>"},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"125","ValueYesNo":0},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"126","ValueYesNo":1},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"120","ValueDate":"01-Apr-2014"},{"EntityType":"AM_AssetLocations","EntityTypeID":"0","CreatedByID":"0","UserDefinedFieldID":"121","ValueDate":"08-Apr-2014 10:00 AM"}]}}
이 문제를 해결하는 데 도움을주십시오.
참고 : ID 자체 필드를 할당하려고하면이 동일한 키 예외를 해결하기 만하면 참조 무결성 예외가 발생합니다. 나는 현실적인 콜렉션 저장이 잘 작동한다는 것을 안다. 하지만 그것은 나를 위해 작동하지 않습니다. 제게 이것에 대한 지침과 해결책을주세요.
감사합니다,
'SyncObjectState'는 무엇을하고 있습니까? BTW이 JSON 문자열은 가로 스크롤에 쓸모가 없습니다. 덕분에 –