保存接口的实现时,MongoDb _id为null

时间:2019-06-20 03:49:32

标签: c# mongodb data-modeling

我创建了以下结构:

    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字段为空。
不允许修改基类或接口。

问题1 :mongo是否仅针对具体类型生成_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字段?

0 个答案:

没有答案