Voici les informations sur mon environnement de développement:conversion du POCO modèle en format BSON de MongoDB
Microsoft Visual Studio 2015 Communauté
.NET Framework 4.6
assemblage ASP.NET MVC System.Web. Mvc version = 5.2.3.0
MongoDB.Driver 2.0.1.27
MongoDB 3.0.6
Dans mon application C#, j'ai le code suivant qui récupère une référence de base de données MongoDB:
public class MongoDBConnectionManager
{
public IMongoDatabase getMongoDB() {
var client = new MongoClient("mongodb://localhost:27017");
IMongoDatabase iMgDb = client.GetDatabase("foo");
IMongoCollection<BsonDocument> UserDetails =
iMgDb.GetCollection<BsonDocument>("Users");
return iMgDb;
} // end of public IMongoDatabase getMongoDB()
} // end of public class MongoDBConnectionManager
Voici la classe POCO qui représentent un utilisateur d'une entité commerciale:
using MongoDB.Bson.Serialization.Attributes;
public class UserModel
{
public object _id { get; set; } //MongoDb uses this field as identity.
[BsonId]
public int ID { get; set; }
[Required]
[BsonRepresentation(MongoDB.Bson.BsonType.String)]
public string UserName { get; set; }
[Required]
//[DataType(DataType.Password)]
[BsonRepresentation(MongoDB.Bson.BsonType.String)]
public string Password { get; set; }
[Required]
// [DataType(DataType.EmailAddress)]
[BsonRepresentation(MongoDB.Bson.BsonType.String)]
public string Email { get; set; }
[BsonRepresentation(MongoDB.Bson.BsonType.String)]
public string PhoneNo { get; set; }
[BsonRepresentation(MongoDB.Bson.BsonType.String)]
public string Address { get; set; }
}
Voici le DAO C# classe qui utilise la classe DB Mongo Connection Manager:
public class DAO
{
public int insertNewUser(UserModel um)
{
MongoDBConnectionManager mgoDBCntMng = new MongoDBConnectionManager();
IMongoDatabase database = mgoDBCntMng.getMongoDB();
IMongoCollection <BsonDocument> UserDetails = database.GetCollection<BsonDocument>("Users");
UserDetails.InsertOneAsync(um);
return 0;
}
}
le problème que je suis face est avec le Follo ligne aile du code dans la classe DAO:
UserDetails.InsertOneAsync(um);
Communauté Visual Studio 2015 affiche l'erreur suivante:
cannot convert from 'UserModel' to MongoDB.Bson.BsonDocument
Je crois que l'erreur a quelque chose à voir avec la traduction en quelque sorte le userModel POCO dans le format BSON de MongoDB . Par conséquent, dans mon POCO UserModel, j'ai utilisé l'espace d'utilisation appelé MongoDB.Bson.Serialization.Attributes parce que je pensais que nous avions besoin d'utiliser MongoDB Annotations. Cependant, il n'a toujours pas réussi à résoudre le problème.
Quelqu'un pourrait me dire comment corriger le problème?
Vous n'avez pas besoin de tout marquer avec BsonElement. Le conducteur ramassera toute propriété publique par lui-même. Vous n'avez pas non plus besoin de nous dire qu'une propriété de chaîne doit être représentée comme une chaîne. Je suggère de supprimer tous les attributs et de ne remettre que ceux dont vous avez besoin. Supprimez ce _id cependant. La propriété "ID" est marquée avec BsonId, indiquant qu'il doit être utilisé comme identifiant. –
Thx dlght & @ craig-wilson, pourriez-vous me dire comment je peux spécifier public int ID {get; ensemble; } pour auto-incrémenter depuis le POCO appelé UserModel? – user1338998
MongoDB ne prend pas en charge les champs auto-incrémentés.Vous devrez soit le créer vous-même, soit utiliser un ObjectId. –