2016-11-28 4 views
0

Ich bin neu in MongoDB und, nach einigen Tutorials, versuche ich Daten aus meiner SQL Server-Datenbank zu lesen und sie in MongoDB mit C# und Entity Framework umzukehren.BSON Fehler beim Erstellen neuer BsonDocument für MongoDB

fand ich diesen Code auf MongoDB Website:

async static void addDoc() 
{ 
    var document = new BsonDocument 
    { 
     { "address" , new BsonDocument 
      { 
       { "street", "2 Avenue" }, 
       { "zipcode", "10075" }, 
       { "building", "1480" }, 
       { "coord", new BsonArray { 73.9557413, 40.7720266 } } 
      } 
     }, 
     { "borough", "Manhattan" }, 
     { "cuisine", "Italian" }, 
     { "grades", new BsonArray 
      { 
       new BsonDocument 
       { 
        { "date", new DateTime(2014, 10, 1, 0, 0, 0, DateTimeKind.Utc) }, 
        { "grade", "A" }, 
        { "score", 11 } 
       }, 
       new BsonDocument 
       { 
        { "date", new DateTime(2014, 1, 6, 0, 0, 0, DateTimeKind.Utc) }, 
        { "grade", "B" }, 
        { "score", 17 } 
       } 
      } 
     }, 
     { "name", "Vella" }, 
     { "restaurant_id", "41704620" } 
    }; 

    var collection = _database.GetCollection<BsonDocument>("restaurants"); 
    await collection.InsertOneAsync(document); 
} 

Es funktioniert, wie ich erwartet. Also, ich habe dies:

using (var db = new Entities()) 
{ 
    foreach (var trans in db.TRANSACTIONS) 
    { 
     try 
     { 
      var document = new BsonDocument 
      { 
       { "ID", erog.ID.ToBson() }, 
       { "CUSTOMER" , new BsonDocument 
        { 
         { "CSTID", trans.CUSTOMERS.CSTID.ToBson() }, 
         { "NAME", trans.CUSTOMERS.NAME.ToBson()}, 
         { "CITY", trans.CUSTOMERS.CITY.ToBson() }, 
         { "ZIP", trans.CUSTOMERS.ZIP.ToBson() }, 
         { "STATE", trans.CUSTOMERS.STATE.ToBson() }, 
        } 
       }, 
       { "TRANSACTIONNUMBER", trans.TRANSACTIONNUMBER.ToBson() }, 
       { "TIMESTAMP", erog.TIMESTAMP.ToBson() }, 
       { "AMOUNT", erog.AMOUNT.ToBson() }, 
       { "PAYMENT", erog.PAYMENT.ToBson() }, 
      }; 

      var collection = _database.GetCollection<BsonDocument>("transactions"); 
      collection.InsertOne(document); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
     } 
    } 
} 

Wenn ich versuche, diesen Code auszuführen, erhalte ich einen Fehler bei der Ausführung var Dokuments = new BsonDocument {....}; Der Fehler ist "Ein String-Wert kann nicht in die Root-Ebene eines Bson-Dokuments geschrieben werden". Also, wie Sie sehen können, habe ich versucht, die .ToBson() am Ende meiner Werte, aber das Ergebnis ist immer noch das gleiche.

Der einzige Unterschied ist der Wert ist keine Zeichenfolge zwischen zwei Anführungszeichen, aber es ist ein echter Wert aus meiner Tabelle.

Wie kann ich mein Ziel erreichen und erstellen & ein Dokument in meine MongoDB-Datenbank einfügen, beginnend mit meinem Code oben?

Antwort

0

Ok, dumme Frage, dumme Lösung.

Ersetzen Sie einfach alle Tobson() mit toString() und jetzt funktioniert es! :)

Verwandte Themen