У меня возникают большие проблемы, когда я переопределяю свойство Id
в производном классе в моей настройке хранилища MongoDB.
Базовый класс, который наследуют все мои модели данных, выглядит так:
public abstract class DataModel
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public virtual string Id { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
public DateTime Deleted { get; set; }
}
Затем есть несколько конкретных дочерних моделей данных, которые используют upserts. Это требует, чтобы я аннотировал переопределенное свойство Id
с помощью [BsonIgnoreIfDefault]
в соответствии с этим ответом:
public class ChildDataModel : DataModel
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
[BsonIgnoreIfDefault] // <---- need this for Upserts to work
public override string Id { get; set; }
... // child-specific properties
}
Но, к сожалению, это приводит к этой ошибке:
Свойство Id типа Namespace.ChildDataModel не может использовать имя элемента _id, поскольку оно уже используется свойством Id типа Namespace.DataModel.
Я пробовал регистрировать карты классов, добавлять дискриминатор типов с RootClass = true
в базовую модель, а также определять мои дочерние модели данных в базовом классе с помощью специального атрибута [BsonKnownTypes(typeof(ChildDataModel), ...)]
, но безрезультатно.
Что я здесь делаю не так?