MongoDb collection 名称不同于 C# class
MongoDb collection Name different from C# class
这是我们的 C# 泛型 Class。
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; }
}
这是我们class生成的文档。
{
"_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" : [
],
}
问题是我们想将 collection 命名为 CustomerQuoteDetails
,但由于通用 class 而将其命名为 CustomerQuoteDetails`1
。有什么办法可以让我的 collection 随心所欲地命名吗?
为什么不引入一个 属性 允许您设置集合名称?
根据你的评论,我真的不能告诉你在哪里调用你的 GetCollection()
,在你的基地 class 在一些存储库或任何地方。
但是没有什么能阻止你在你的 BaseClass
上实现一个名为 CollectionName
的虚拟 属性 并在你的 CustomerQuoteDetails
class 中覆盖它并做类似于 _mongoDbContext.GetCollection<TEntity>(customerQuoteDetails.CollectionName);
或引入包含您的集合名称的常量 class 。也许更新您的答案以包括您在哪里执行 GetCollection()
.
这是我们的 C# 泛型 Class。
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; }
}
这是我们class生成的文档。
{
"_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" : [
],
}
问题是我们想将 collection 命名为 CustomerQuoteDetails
,但由于通用 class 而将其命名为 CustomerQuoteDetails`1
。有什么办法可以让我的 collection 随心所欲地命名吗?
为什么不引入一个 属性 允许您设置集合名称?
根据你的评论,我真的不能告诉你在哪里调用你的 GetCollection()
,在你的基地 class 在一些存储库或任何地方。
但是没有什么能阻止你在你的 BaseClass
上实现一个名为 CollectionName
的虚拟 属性 并在你的 CustomerQuoteDetails
class 中覆盖它并做类似于 _mongoDbContext.GetCollection<TEntity>(customerQuoteDetails.CollectionName);
或引入包含您的集合名称的常量 class 。也许更新您的答案以包括您在哪里执行 GetCollection()
.