2016-08-22 80 views
0

我們使用MongoDb作爲緩存服務來緩存我們的Visual Studio解決方案中廣泛使用的TDO類。
MongoDB需要存儲對象上的_id字段,因此每個DTO類都必須具有_id屬性。
該要求公開了DTO上的具體實現。
我們如何克服它?在MongoDB中緩存DTO類

+0

從DTO創建業務對象。應用程序的其餘部分應使用業務對象。只有數據層應該使用DTO。 – itsme86

回答

1

爲了擴大@Rahul提供的答案,MongoDB C#驅動程序提供註釋[BsonElement("<name>")]以幫助。

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

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

    // etc 
} 
+0

這是迄今爲止最好的解決方案。 但是我們仍然需要繼續參考MongoDB彙編與DTO庫彙編,這是OO術語是實現泄漏。 –

0

是的,這是真的,MongoDB要求事件實體(文檔)必須有一個_id字段。因爲在你的情況下每一個實體(DTO)必須有ID字段中,您可以創建一個基本的實體,並把所有的DTO(具體的實體),從中獲得像

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

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

可以以及考慮創建您的收藏相同作爲POCO結構。

+0

您可以使用'[BsonElement(「_ id」)]'註釋該屬性,以允許更友好的命名爲'public string Id {get; set;}' – tawman

+0

Grate solution @tawman。請在這裏寫下答案。 –