簡體   English   中英

MongoDB c#驅動程序_id字段和SetIdMember()

[英]MongoDB c# driver _id field and SetIdMember()

我為類映射設置了SetIdMember()以指向對象內的一個元素:

BsonClassMap.RegisterClassMap<Person>(x =>
    {
        x.AutoMap();
        x.SetIdMember(x.GetMemberMap(p => p.PersistedId));
    });

效果很好,但是我正在查看mongo數據(通過MongoVUE),並注意到PersistedId字段未存儲在數據庫中的任何位置,我想這是因為它將其映射到_id字段。

現在,對於99%的場景,我確定還可以,但是在這種情況下,我使用的是非嚴格類型化的模型,並拉回原始的BsonDocument,然后將其轉換為JSON,以傳遞給客戶端腳本以供進一步使用。 但是,它期望在JSON中獲取PersistedId字段,但它不存在,它只是_id。

那么,有沒有一種方法讓我執行它的整個唯一_id字段操作,又使它也將PersistedId字段寫到數據庫中? (我知道它將要重復數據,但不必擔心)

您可以添加一個只讀屬性,並讓驅動程序知道將其作為PersistedId存儲在數據庫中。

public class Entity
{
    public ObjectId Id { get; set; }

    public ObjectId PersistedId 
    {
        get { return Id; }
    }
}

BsonClassMap.RegisterClassMap<Person>(x =>
{
    x.AutoMap();
    x.MapMember(x => x.PersistedId);
});

但是,我不確定這是最好的主意。 在這樣的服務器環境中,您可能不應該與UI共享數據庫模型。 相反,您應該從數據庫模型映射到UI模型。 這提供了很多好處,例如聚合模型,轉換模型等...,因此您的UI與您的UI緊密相連。 但是,最終,這是您的電話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM