Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置MongoDB自动为每个子文档分配ID? 公共类子类{ 公共布尔是有效的{ 得到; 设置 } } 公共类主类{ 公共列表子类{ 得到; 设置 } } MainClass m=新的MainClass(){ Name=“Mohsen”,SubClass=new List(new SubClass[]{ 新的子类(){ IsValid=true } }) }; MongoMainClassCollection.Save(m);_C#_Mongodb_Mongodb Query - Fatal编程技术网

C# 如何设置MongoDB自动为每个子文档分配ID? 公共类子类{ 公共布尔是有效的{ 得到; 设置 } } 公共类主类{ 公共列表子类{ 得到; 设置 } } MainClass m=新的MainClass(){ Name=“Mohsen”,SubClass=new List(new SubClass[]{ 新的子类(){ IsValid=true } }) }; MongoMainClassCollection.Save(m);

C# 如何设置MongoDB自动为每个子文档分配ID? 公共类子类{ 公共布尔是有效的{ 得到; 设置 } } 公共类主类{ 公共列表子类{ 得到; 设置 } } MainClass m=新的MainClass(){ Name=“Mohsen”,SubClass=new List(new SubClass[]{ 新的子类(){ IsValid=true } }) }; MongoMainClassCollection.Save(m);,c#,mongodb,mongodb-query,C#,Mongodb,Mongodb Query,问题是所有子类ID的默认值都是零。 每当我保存MainClass时,我希望MongoDB为任何子类分配一个唯一的ID 有没有办法配置MongoDB来实现这一点 MongoDB不会自动为您执行此操作。MongoDB不会将ID添加到子文档中。最好的办法是在子类构造函数中添加一些东西来自动填充ID public class SubClass { public bool isValid { get; set; } } public class MainClass {

问题是所有子类ID的默认值都是零。
每当我保存MainClass时,我希望MongoDB为任何子类分配一个唯一的ID


有没有办法配置MongoDB来实现这一点

MongoDB不会自动为您执行此操作。MongoDB不会将ID添加到子文档中。最好的办法是在子类构造函数中添加一些东西来自动填充ID

public class SubClass {
    public bool isValid {
    get;
    set;
    }
}

public class MainClass {
    public List < SubClass > SubClasses {
    get;
    set;
    }
}

MainClass m = new MainClass() {
    Name = "Mohsen", SubClasses = new List < SubClass > (new SubClass[] {
    new SubClass() {
        IsValid = true
    }
    })
};
MongoMainClassCollection.Save < MainClass > (m);

非常感谢。您还可以提供代码,以便我选择作为答案。代码与问题无关。您可以通过多种方式实现它,具体取决于您希望如何设置Id以及希望将Id设置为什么类型。谢谢,我已尝试将对象保存在其构造函数中,以便分配Id。然而,这会产生很多副作用,比如保存空对象。任何帮助我自动分配ID的代码都是完全相关的!您没有将子文档保存在构造函数中,只需要为您的ID分配一个值。
public class SubDocument {
    //if using objectId as ID
    public ObjectId Id = { get; set;}

    public SubDocument(){
        Id = ObjectId.GenerateNewId()
    }

}