Я создал эту структуру:
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?