공식 C# 드라이버를 사용하여 몽고 db를 업서 딩하는 동안 문제가 있습니다.몽고 DB 및 ID 문제에서의 업 그레 이드
public abstract class AggregateRoot
{
/// <summary>
/// All mongoDb documents must have an id, we specify it here
/// </summary>
protected AggregateRoot()
{
Id = ObjectId.GenerateNewId();
}
[BsonId]
public ObjectId Id { get; set; }
}
내 실체는 이미 ID-S를 가지고 있지만 콜렉션의 모든 문서가 하나가 있어야으로, 작동하기위한 몽고 특정 ID를 작성했다. 이제 내 시스템에 새로운 엔티티가 생겼다. 새로운 몽고 ID가 생성되고 문고가 문서의 _id를 바꿀 수 없다. 예외. 몇 가지 해결 방법이 있습니까?
조금 설명해 드리겠습니다. 이 문서로 저장된 모든 항목은 의 ID 생성을 가진 AggregateRoot에서 상속되었습니다. 모든 하위 문서는 ID가 으로 자동 생성되었으며이 문제는 발생하지 않았습니다. MongoCollection에서 List로 데이터를 검색 할 때 AggregateRoot 의 id가 문제를 해결하기 위해 도입되었으며 생성이 도입되어 id-s 이 서로 다릅니다. 이제 update를위한 새로운 엔티티가 새로운 id 생성을 가지므로 메소드를 저장하기 위해 id 생성을 이동할 수 있습니다. 그러나 은 팀의 모든 개발자가 위험한 저장소에 ID- 을 생성하는 것을 잊지 말아야 함을 의미합니다. 그냥 가능한 경우 몽고에서 매핑보다 ID 를 무시하고 명시 적으로 삽입 및 업데이트 모두에 대해
Id
값을 설정 할 수있는 것 같은데 모든
개체를 어떻게 저장하고 있습니까? BsonId 속성은 MongoDB가 그 필드를 당신의 id로 사용하도록해야합니다. –
데이터는 저장을 위해 외부 시스템에서 가져온 것입니다. 그것은 저장해야만하는 고유 ID를 가지고 있습니다. 그리고 이것은 Mongo와의 호환성을 위해 가짜 ID입니다. 모든 문서는 AggregateRoot에서 상속되므로 모든 객체를 수신 할 때 생성됩니다. 동일한 데이터를 수신 할 수도 있지만 생성 된 몽고 ID는 다릅니다. 따라서 예외가 나타납니다 –