Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] The type initializer for 'MongoDB.Bson.Serialization.BsonClassMap' threw an exception.

Boa tarde,

Ao seguir o passo a passo do professor Victorino Vila do curso ".Net e MongoDB parte 1: integre aplicações .NET", me deparei com a seguinte excessão da qual eu não consigo sair dela, alguem consegue me ajudar?

Exceção:

System.TypeInitializationException: The type initializer for 'MongoDB.Bson.Serialization.BsonClassMap' threw an exception.
 ---> System.ArgumentNullException: Value cannot be null. (Parameter 'type')
   at System.Reflection.IntrospectionExtensions.GetTypeInfo(Type type)
   at MongoDB.Bson.Serialization.BsonClassMap..cctor()
   --- End of inner exception stack trace ---
   at MongoDB.Bson.Serialization.BsonClassMap.LookupClassMap(Type classType)
   at MongoDB.Bson.Serialization.BsonClassMapSerializationProvider.GetSerializer(Type type, IBsonSerializerRegistry serializerRegistry)
   at MongoDB.Bson.Serialization.BsonSerializerRegistry.CreateSerializer(Type type)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at MongoDB.Bson.Serialization.BsonSerializerRegistry.GetSerializer[T]()
   at MongoDB.Driver.MongoCollectionImpl`1..ctor(IMongoDatabase database, CollectionNamespace collectionNamespace, MongoCollectionSettings settings, ICluster cluster, IOperationExecutor operationExecutor)
   at MongoDB.Driver.MongoDatabaseImpl.GetCollection[TDocument](String name, MongoCollectionSettings settings)
   at MongoDB.Program.MainAsync(String[] args) in C:\Users\marki\source\repos\MongoDB\MongoDB\Program.cs:line 71

Minha classe

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace MongoDB
{
    public class Livro
    {
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
        public string Titulo { get; set; }
        public string Autor { get; set; }
        public int Ano { get; set; }
        public int Paginas { get; set; }
        public List<string> Assunto { get; set; }
    }
}

Meu Programa:

using System;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;

namespace MongoDB
{
    class Program
    {

        static void Main(string[] args)
        {
            Task T = MainAsync(args);
            Console.ReadKey();
        }

        static async Task MainAsync(string[] args)
        {
            try
            {

                /*

                 {
                    "Título":"Guerra dos Tronos",
                    "Autor":"George R R Martin",
                    "Ano":1999,
                    "Páginas":856
                    "Assunto": [
                        "Fantasia",
                        "Ação"
                    ]
                   }

                 */

                /*
                var doc = new BsonDocument {
                    {"Titulo", "Guerra dos Tronos" }
                };
                doc.Add("Autor", "George R R");
                doc.Add("Ano", 1999);
                doc.Add("Páginas", 856);

                var docarray = new BsonArray();
                docarray.Add("Fantasia");
                docarray.Add("Ação");

                doc.Add("Assunto", docarray);

                Console.WriteLine("Prévia: "+doc);
                */

                Livro livro = new Livro();
                livro.Titulo = "DEUSES AMERICANO";
                livro.Autor = "NEIL GAIMAN";
                livro.Ano = 2015;
                livro.Paginas = 654;

                List<string> cont = new List<string>();
                cont.Add("Ficção");
                cont.Add("Nórdico");
                cont.Add("Ação");

                livro.Assunto = cont;

                string con = "mongodb://localhost:27017";
                IMongoClient cmd = new MongoClient(con);
                IMongoDatabase bd = cmd.GetDatabase("Biblioteca");

                IMongoCollection<Livro> collection = bd.GetCollection<Livro>("Livros");

                await collection.InsertOneAsync(livro);

                Console.WriteLine("Done");
            }
            catch(Exception e) { Console.WriteLine(e.ToString()); }

        }
    }
}
1 resposta
solução!

Atualizei a versão do pacote NuGet MongoDB.Driver para a versão mais recente (1.17.1) e atualizei a versão do banco de dados mongodb para 6.0.1 ao invés de utilizar a versão 3.4 utilizada no curso!!