UniqueConstraints-bundle을 사용하는 Organization이라는 이름의 엔티티가 있습니다. 우리는 NetName이라는 이름의 UniqueConstraint라는 속성과 자동 생성 된 Id를 가지고 있습니다.RavenDB의 Id 값 변경
이것은 불필요한 것이므로 Id 대신 NetName-property를 사용하고 싶습니다. UniqueConstraints가 고유하다는 것을 알기 위해 UniqueConstraints가 필요 없으며 NetName이있을 때 Load를 사용할 수 있다는 이점도 얻습니다.
우리는 그래서 우리는 지금의 가치 보유 TempUniqueNetName라는 새로운 임시 특성 만든 아이디로 사용하기 전에 우리의 네트 조금 정리하는 데 필요한 :"organizations/"+ CleanupId(this.NetName)
그래서 우리가 지금 준비를 간단하게 그 값을 우리 이드에게로 옮기십시오. 그러나 우리는 그것을 작동시킬 수 없습니다. 우리의 문제는 아래의 PatchRequest를 사용하면 데이터베이스에 ID라는 새 속성이 생기지 만 실제 ID는 여전히 동일한 값을 갖습니다 (스크린 샷 참조). ID의 값을 변경하는 더 나은 (올바른) 방법이 있습니까?
기업은 :
class Organization {
public string Id { get; set; }
[UniqueConstraint]
public string NetName { get; set; }
public string TempUniqueNetName{ get; set; }
}
우리는 같은 것을 할 할 :
_documentStore.DatabaseCommands.UpdateByIndex(typeof(Organizations).Name,
new IndexQuery(),
new[]
{
new PatchRequest()
{
Type = PatchCommandType.Rename,
Name = "TempUniqueNetName",
Value = new RavenJValue("Id")
}
});
게시 요청 여기 : http://issues.hibernatingrhinos.com/issue가/RavenDB-801 –
네, 감사합니다. 아마도 귀하의 제안을 사용하고 의사를 복사 할 것입니다. 그것은 한 시간 일 뿐이므로 시간이 걸릴 것 같지 않습니다. 바라건대 다음에 우리가 이것을 필요로 할 때 구현 될 것입니다. –
FYI : RavenDB 개발자는이 기능을 추가하지 않고 대신 "사용자가 트랜잭션 삭제/삽입 쌍으로 쉽게 구현할 수 있다고 응답했습니다. . " –