타사 개발자로부터 Winforms 컨트롤을 가지고 있으며 MongoDB에 직접 데이터를 저장하려고합니다. 자원 목록과 약속 목록이있는 간지 차트입니다. 약속에는 리소스에 대한 약속의 매핑을 담당하는 리소스 목록도 있습니다. 문서가 데이터베이스에 제대로 저장됩니다 MongoDB 및 C#을 사용하여 개체 그래프 직렬화
public class PlanningDocument
{
[BsonId]
public ObjectId Id { get; set; }
public string Name { get; set; }
public ResourceCollection Resources { get; set; }
public ItemCollection Schedule { get; set; }
}
(I 데이터베이스의 내용을 확인 MongoVUE을 사용하고 있습니다)
:은 스토리지를 단순화하기 위해 나는 "PlanningDocument"라는 클래스를 만들었습니다. 그러나 "일정"컬렉션의 항목에는 프로그램 실행 중일 때와 같이 리소스에 대한 참조가 포함되어 있지 않습니다.
개체간에 참조 된 관계를 저장하려면 어떻게해야합니까?
편집 : 내가 좀 더 구체적인 예와 함께 수행 할 작업을 설명하려고합니다 :
public class Identity
{
public string Id;
public Identity()
{
Id = Guid.NewGuid().ToString();
}
}
public class Thing : Identity
{
public string Name = "";
}
public class Drawer : Identity
{
public List<Thing> SomeThings;
public List<Thing> AdditionalThings;
public Drawer()
{
SomeThings = new List<Thing>();
AdditionalThings = new List<Thing>();
}
}
나는 이러한 클래스 "것"과 "서랍"가. 서랍에는 "SomeThings"및 "AdditionalThings"의 항목이 포함될 수 있습니다. 참조가 아닌 - 내가 (여기 "것 1"로 수행 등)을 모두 목록에서 같은 일을 저장할 때
var d = new Drawer();
d.AdditionalThings.Add(new Thing() { Name = "Thing 1"});
d.AdditionalThings.Add(new Thing() { Name = "Thing 2" });
d.AdditionalThings.Add(new Thing() { Name = "Thing 3" });
d.SomeThings.Add(new Thing() { Name ="Thing A"});
d.SomeThings.Add(d.AdditionalThings[0]);
는 MongoDB를들은 것 (1)의 사본을 저장합니다.
내 질문 : MongoDB와 C# 드라이버를 복사본 대신 여기에 저장하는 일반적인 방법이 있습니까? 사전 아킴
적어도 순환 참조를 시도하고 저장하는 것은 바람직하지 않습니다. 당신이 저장하려고하는 것이 정확히 무엇인지 명확히하기 위해 다른 수업을 보여줄 수 있습니까? –
다른 클래스는 상당히 복잡하지만 문제를 설명 할 수 있다고 생각합니다. 리소스가 올바르게 저장되었습니다. ItemCollection의 Items에는 Resource에 대한 참조가있는 ResourceCollection이 들어 있습니다. 그러나 저장 후 각 항목의 ResourceCollection은 비어 있습니다. –
어떤 버전의 드라이버를 사용하고 있습니까? –