Имя коллекции MongoDb отличается от класса C # - PullRequest
0 голосов
/ 04 октября 2019

Это наш универсальный класс C #.

public class CustomerQuoteDetails<T> :BaseClass {
    [BsonId(IdGenerator = typeof(UniqueIdGenerator))]
    public string QuoteDetailId { get; set; }
    public string Title { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string ContactNo { get; set; }
    public DateTime DOB { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string Token { get; set; }
    public string ProfilePicture { get; set; }
    [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime TokenCreatedOn { get; set; }
    [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime LastLoginTime { get; set; }
    public List<T> Answers { get; set; }       
}

И это документ, который генерируется нашим классом.

{ 
    "_id" : "053ab8f1-ceda-49a7-ab7a-0dce034b4c20", 
    "CreatedBy" : "", 
    "CreatedDate" : ISODate("2019-10-04T04:52:44.313+0000"), 
    "UpdatedBy" : "", 
    "UpdatedDate" : ISODate("2019-10-04T04:52:44.314+0000"), 
    "IsDeleted" : false, 
    "Title" : "Mr", 
    "FirstName" : "", 
    "LastName" : "", 
    "ContactNo" : "", 
    "DOB" : ISODate("2019-10-04T04:52:44.314+0000"), 
    "Email" : "a@a.com", 
    "Password" : null, 
    "Token" : "7e396637-e8b2-4c1c-badb-cc14d785b03d", 
    "ProfilePicture" : null, 
    "TokenCreatedOn" : ISODate("2019-10-04T04:52:44.314+0000"), 
    "LastLoginTime" : ISODate("2019-10-04T04:52:44.314+0000"), 
    "Answers" : [

    ],     
}

Проблема в том, что мы хотим назвать коллекцию CustomerQuoteDetails, но это имя CustomerQuoteDetails`1 из-за универсального класса. Можно ли как-нибудь назвать свою коллекцию так, как я хочу?

1 Ответ

0 голосов
/ 11 октября 2019

Почему бы просто не ввести свойство, позволяющее установить имя коллекции? Исходя из вашего комментария, я не могу точно сказать, где вы называете ваш GetCollection(), в вашем базовом классе в каком-то хранилище или где-то еще.

Но ничто не мешает вам реализовать виртуальное свойство под названием CollectionName на вашемBaseClass и переопределяем его в вашем CustomerQuoteDetails классе и делаем что-то вроде _mongoDbContext.GetCollection<TEntity>(customerQuoteDetails.CollectionName); Или вводим класс констант, который включает имена вашей коллекции. Возможно, обновите свой ответ, чтобы указать, где вы делаете GetCollection().

...