Prehistory: Bir XML şemasından (XSD) oluşturulan bir sınıf hiyerarşisine (büyük bir tane) sahibim.MongoDB С # sürücüsünü kullanarak obj.ToBsonDocument() öğesini çağırarak, boş değerleri global olarak nasıl yok sayılır?
MyObj obj;
Günümüzde: Aslında oluşturulan sınıf hiyerarşisi kullanarak bir nesneye bir XML bir dize değeri, ayrıştırmak gerekir ve sonra MongoDB içine nesne koymak gerekir. kodudur:
sorunprivate BsonDocument XmlToBson(string content)
{
MyObj obj;
using (var reader = new StringReader(content))
{
var serializer = new XmlSerializer(typeof(MyObj));
obj = (MyObj) serializer.Deserialize(reader);
}
return obj.ToBsonDocument();
}
: Ben boş bir sürü çocuk hiyerarşisinde nesneleri var, Robomongo içinde şuna benzer:
Ben null adlı eklemekten kaçının istiyorum veritabanına nesneleri. Öznitelikler veya lambda ifadeleri kullanarak Ignoring Default Values burada açıklandığı gibi, bunları tek tek görmezden gelebileceğimi biliyorum. Fakat hiyerarşi büyük ve karmaşık olduğu için bu yaklaşımı sevmiyorum. Boş değerleri olduğunda yok sayılması gereken tüm özellikleri listelemek için tembel davranıyorum. Dahası, sınıf gelecekte yeniden canlandırılabilir ve göz ardı edilmesi gereken özelliklerin listesini desteklemek için bir kabus olacaktır.
Soru: Nasıl hedefe ulaşabilirsiniz ve küresel nesne hiyerarşide bulunan olursa olsun boş değerler göz ardı? MongoDB C# driver ver ile çalışıyorum. 2.2.
Hey Antipod, onları görmezden gelirseniz onları zorlarsınız ve bir "null" değeri denetimi ile kaldırmazsınız. Btw'yi "göz ardı et" ile neyi kastediyorsunuz, yoksa onları yerleştirmeyin veya başka bir nesneyi "yer tutucu" olarak sütuna boşaltır mı? –
"Yok say" derken onları veritabanında görmek istemiyorum. Sahte değerler koymak, yani kullanılmayacak olan değerler, iyi bir fikir gibi gelmiyor, veritabanında çöp olmasını istemiyorum. Ve bir şey boş olup olmadığını (nasıl?) Kontrol edin ve bir yük gibi geliyor ya da muhtemelen ne demek istediğini anlamıyorum. – Antipod
Bkz. Http://stackoverflow.com/a/43259080/194717 – Tony