在MongoDB中缓存DTO类

时间:2016-08-22 14:34:55

标签: c# mongodb

我们使用MongoDb作为缓存服务来缓存我们的Visual Studio解决方案中广泛使用的TDO类。
MongoDB需要存储对象的_id字段,因此每个DTO类都必须具有_id属性 该要求揭示了DTO的具体实施 我们怎样才能克服它?

2 个答案:

答案 0 :(得分:1)

为了扩展@Rahul提供的答案,MongoDB C#驱动程序提供了注释[BsonElement("<name>")]以帮助serialize documents with the CSharp driver

public class Entity
{
    [BsonElement("_id")]
    public string Id { get; set; }
}

public class DTO : Entity 
{
    [BsonElement("bd")]
    public DateTime BusinessDate { get; set; }

    // etc
}

答案 1 :(得分:0)

是的,MongoDB要求事件实体(文档)必须具有_id字段。因为在您的情况下,每个实体(DTO)都必须具有Id字段,您可以创建一个基本实体并让所有DTO(具体实体)从中派生出来,如

public class BaseDTO
{
  public string _id {get; set;}
}

public class DTO1 : BaseDTO 
{
  // your specific implementation
}

您也可以考虑创建与POCO结构相同的集合。