我已创建了getter和setter方法的简单对象:插入不创建ID?
public class MemberCanonical : IMemberCanonical
{
public ObjectId Id { get; set; }
public String username { get; set; }
public String email { get; set; }
public String status { get; set; }
public IEnumerable<string> roles { get; set; }
}
现在我要到一个新的成员插入到与数据库:
try
{
memberObj.username = username;
memberObj.email = email;
memberObj.status = "active";
// memberObj.Id = new ObjectId().ToString();
this.membershipcollection.Insert(memberObj, SafeMode.True);
return true;
}
catch(Exception ex)
{
return false;
}
我希望插入创建一个独特的_id( Id),但没有发生。在插入时,当我查看_id字段时,我会得到“0000000 ....”
我需要做什么才能让Mongo在插入时生成它自己的_id?
有时我喜欢回答我一无所知的科目中的问题。下面是我发现的:您可以使用ObjectId.GenerateNewId()自己生成id。您可以在MemberCanonical的构造函数中执行此操作,也可以在插入ObjectId.Empty时检查Id。接下来,它是*可能*它应该被称为'_id',我对此不太确定。我也尝试使用ObjectId?并将它的值设置为null,但这是一个疯狂的猜测。 – Kobi
它在Id类型为ObjectId时自动创建Id。这是预期的。如果Id不是ObjectId驱动程序将不知道如何创建该Id并使其唯一。因此,必须手动完成。 –
有没有人有一个解决方案,不需要通过持久性问题(如对MongoDB类型的依赖)来污染域模型? – Kurt