2014-02-11 5 views
7

ich ein Modell haben, die wie folgt aussieht:MongoDB C# Treiber Serialisierung mit dynamischen Objekten

public class Record 
{ 
    public Record() 
    { 
     Created = DateTime.Now; 
    } 

    public string Id { get; set; } 

    public string ApplicationId { get; set; } 

    public Dictionary<string, dynamic> Values { get; set; } 

    public DateTime Created { get; set; } 
} 

, die in MongoDB die MongoDB C# Treiber verwenden gespeichert ist. Dies funktioniert gut, wenn ich Dinge wie:

{ 
    applicationId: "52f52db8008a280f583c9ff6", 
    values: { 
    "52f9410a324e68055f39f8c0": 245234 
    "52f941096d82a531e700e56b": "sdfasdf" 
    "52fa4a96e0b2e0d4e61d0a03": "52fa4a9b91c477e367ab99e6" 
    } 
} 

aber wenn ich versuche, ein Array von Strings wie hinzuzufügen:

{ 
    applicationId: "52f52db8008a280f583c9ff6", 
    values: { 
    "52f9410a324e68055f39f8c0": 245234 
    "52f941096d82a531e700e56b": "sdfasdf" 
    "52fa4a96e0b2e0d4e61d0a03": "52fa4a9b91c477e367ab99e6" 
    "52fa85ea16f04a6151e4ea51": [ "52fa85f2d2ffa4cbdcf538e8", "52fa85f205505f671f3d0d7b"] 
    } 
} 

Es gibt mir die folgende Fehlermeldung, wenn ich versuche, ein GET auf das zu tun Dokument:

An exception of type 'System.IO.FileFormatException' occurred in MongoDB.Driver.dll but was not handled in user code 
Additional information: An error occurred while deserializing the Values property of class API.Models.Record.Record: Cannot create an abstract class. 

wenn ich in der Datenbank suchen sie gespeichert es aber sein wirklich funky suchen:

enter image description here

jemand hatte keine Erfahrung mit Dynamik und Mongo?

+0

Welche UI ist das? für Mongo ... – i3arnon

+0

robomongo - http://robomongo.org/ – amcdnl

+0

Auch merkt man Serialisierung nur die Hälfte des Problems ist, wäre Deserialisieren extrem hart sein, wenn nicht unmöglich. – i3arnon

Antwort

6

Aktualisierung:dynamic wird jetzt vom v2.0-Treiber unterstützt.


Sie können nicht dynamic und MongoDB ‚s C# Treiber verwenden. Hier ist eine jira ticket darüber.

Aus der Beschreibung:

Wir haben noch nicht bestimmt, in der Version, die wir Unterstützung für C# dynamische Typen hinzufügen können. Dieses Ticket ist ein Ort, an dem Sie die Erwünschtheit des Features kommentieren und/oder dafür abstimmen können.

+0

gut, dass es etwas funktioniert saugt atleast – amcdnl

+0

@amcdnl vielleicht helfen, dass könnte: http://roysvork.wordpress.com/2013/04/22/using-linq-to-query-loosely-typed-data-in-mongodb/ – i3arnon

+0

sieht tatsächlich aus wie jemand es behoben : https://github.com/mongodb/mongo-csharp-driver/commit/a9b7afb7aa25d4e7e0bc29b4e7fc28d9688af9f0 – amcdnl

Verwandte Themen