MongoDb _id null при сохранении реализации интерфейса - PullRequest
0 голосов
/ 20 июня 2019

Я создал эту структуру:

    public interface IRecord
    {
        string Name { get; set; }
    }

    public class Record : IRecord
    {
        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set;}
        public string Name { get; set; }
        public string Test { get; set; }
    }

Затем я создаю репозиторий для всех сущностей IRecord и метод для вставки:

    public void Insert(IRecord record)
    {
        records = database.GetCollection<IRecords>("Records"); 
        records.InsertOne(record);
    }

ПРИМЕЧАНИЕ: код упрощен

Когда я вставляю запись, я вижу, что поле _id имеет значение null.
Модификация базового класса или интерфейса не допускается.

Вопрос 1 генерирует ли монго _id только для конкретных типов?

Так что в моем проекте будет много разных типов записей. На самом деле я не смогу привести его к конкретному объекту, поэтому вместо этого я получу JObjects, но я хочу гарантировать, что некоторый базовый набор полей будет 100% при вставке.

В основном это будет что-то вроде этого:

public void SomeAction()
{
   IRecord record = new Record();
   //populate basic record fields
   var jObject = JObject.FromObject(record);
   if(true) //condition here
   {
       jObject.Add("newFieldName", new JObject("newFieldValue"));
   }

   recordRepo.Insert(jObject);
}

Вопрос 2 В таком случае, как я могу контролировать поле _id?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...