Ich habe ein einfaches Objekt mit Getter und Setter erstellt:einfügen nicht erstellen 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; }
}
Jetzt möchte ich mit ein neues Mitglied in die Datenbank einzufügen:
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;
}
I Einsatz eine einzigartige _id zu schaffen erwarten würde (Id), aber das passiert nicht. Nach dem Einfügen, wenn ich das Feld _id sehe, bekomme ich "0000000 ...."
Was muss ich tun, damit Mongo seine eigene _id on insert erzeugt?
Manchmal mag ich Fragen in Themen zu beantworten, von denen ich nichts weiß. Hier ist, was ich herausgefunden habe: Sie können IDs selbst generieren mit 'ObjectId.GenerateNewId()' - Sie können es im Konstruktor von 'MemberCanonical' tun, oder überprüfen Sie die ID beim Einfügen gegen' ObjectId.Empty'. Als nächstes ist es möglich * es sollte '_id' genannt werden, da bin ich mir nicht ganz sicher. Ich würde auch versuchen, 'ObjectId?' Zu verwenden und seinen Wert auf 'null' setzen, aber das ist eine wilde Vermutung. – Kobi
Es erstellt die ID automatisch, wenn der ID-Typ ObjectId ist. was wie erwartet ist. Wenn die ID nicht ObjectId ist, weiß der Treiber nicht, wie er diese ID erstellt und eindeutig macht. Dies muss manuell erfolgen. –
Hat jemand eine Lösung, die das Domänenmodell nicht mit Persistenzproblemen wie einer Abhängigkeit von MongoDB-Typen verschmutzt? – Kurt