I am getting error "Cannot deserialize string from BsonType ObjectId"
while trying to get all the record from MongoDb in C# WebAPI
My Id is
[BsonId]
public string Id { get; set; }
After Changing it to
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
its working fine
But while i'm calling post method, its giving me different error
"'d05e139c-3a48-4213-bd89-eba0c22c3c6f' is not a valid 24 digit hex string."
How can solve this problem
My Model is:
public class EstablishmentDetails
{
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string EstablishmentName { get; set; }
public string EstablishmentType { get; set; }
public string Address { get; set; }
public string City { get; set; }
public int StateID { get; set; }
public Int32 PIN { get; set; }
public Int64 PhoneNumber { get; set; }
public string EmailID { get; set; }
public bool Published { get; set; }
public string CreatedDate { get; set; }
public string ModifiedDate { get; set; }
}
My repository fro Get method
public IEnumerable<EstablishmentDetails> GetAllEstablishmentDetails()
{
if (Convert.ToInt32(mCollection.Count()) > 0)
{
var EstablishmentDetailsCollection = mCollection.FindAllAs(typeof(EstablishmentDetails));
if (EstablishmentDetailsCollection.Count() > 0)
{
foreach (EstablishmentDetails item in EstablishmentDetailsCollection)
{
establishmentDetails.Add(item);
}
}
}
var results = establishmentDetails.AsQueryable();
return results;
}
My repository for Post method
public EstablishmentDetails Add(EstablishmentDetails ed)
{
if (string.IsNullOrEmpty(ed.Id))
{
ed.Id = Guid.NewGuid().ToString();
}
mCollection.Save(ed);
return ed;
}
Instead of using
ed.Id = Guid.NewGuid().ToString();
I used
ed.Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
For generating Id
Its working fine : )
Guid.NewGuid() will not produce ObjectId. Object Id is 12 byte data structure and Guid produce 16byte hex string (without '-')
You should remove attribute [BsonRepresentation(BsonType.ObjectId)]
You can use any string as Id in your entity for example 'HiDude' and any string in utf8 format.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With