У меня есть базовый класс под названием запись:Как upsert производный класс в C#
[BsonDiscriminator(RootClass = true)]
[BsonKnownTypes(typeof(AccountEntry))]
public class Entry
{
public ObjectId Id { get; set; }
public string Register { get; set; }
}
С производного класса называется AccountEntry в качестве примера
public class AccountEntry : Entry
{
public Account Account { get; set; }
}
Когда я пытаюсь сделать Update, скомпилирован появляется сообщение об ошибке, которое говорит, AccountEntry не может быть преобразован в Вход
var filter = Builders<AccountEntry>.Filter.Where(x => x.Id = id);
await context.Entries.UpdateOneAsync(filter, new AccountEntry()
{
Account = debitAccount,
}, new UpdateOptions() { IsUpsert = true });
Установки производного класса не вызывает та же проблема.
См. Документы здесь: http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/crud/#polymorphism. Является ли общий тип вашей коллекции Entry или AccountEntry? –
Коллекция является общим типом. '_database.GetCollection (ENTRY_COLLECTION_NAME);' –
Извините, пропустил ошибку «время компиляции». Я добавляю ответ. –