Я использую C # драйвер MongDB 2.7.2 (сервер 4.0.5) с моим приложением и пытаюсь вставить эту модель:
abstract class ModelBase
{
public virtual int Duration { get; set; }
public virtual DateTime EndDate { get; set; }
public virtual DateTime StartDate { get; set; }
}
class MongoModel : ModelBase
{
[BsonElement("_id")]
public ObjectId Id { get; set; }
[BsonElement("duration")]
public override int Duration { get; set; }
[BsonElement("end_date")]
public override DateTime EndDate { get; set; }
[BsonElement("start_date")]
public override DateTime StartDate { get; set; }
}
Я использую наследование этого класса, потому что хочу иметь возможность создавать MongoBase (MongoDB), DynamoBase (AWS) и т. Д.
Но при вставке отображается следующий документ (с дублированными элементами):
class MongoDBDataProvider : DataProvider
{
private MongoClient _client;
public MongoDBDataProvider(string endpoint) : base(endpoint)
{
_connectionString = $"mongodb://{_endpoint}";
_client = new MongoClient(_connectionString);
}
public override async Task Insert(ModelBase src)
{
var coll = GetCollection();
await coll.InsertOneAsync((MongoModel)src);
}
private IMongoCollection<MongoModel> GetCollection()
{
IMongoDatabase db = _client.GetDatabase("db");
return db.GetCollection<MongoModel>("coll");
}
}
Результат:
_id:5c4123116b2940340551785f
Duration:10
EndDate:2020-02-02 05:02:00.000
StartDate:2020-02-02 05:02:00.000
duration:10
end_date:2020-02-02 05:02:00.000
start_date:2020-02-02 05:02:00.000
Почему это происходит? Любой намек? Что я делаю не так?