.net - 使用值对象作为 RavenDB .NET 客户端的标识符
问题描述
我正在寻找一个如何使用自定义类作为 RavenDB .NET 客户端的标识符的示例。我有这样的事情:
class Product
{
public ProductId Id { get; }
public Product()
{
Id = new ProductId(Guid.NewGuid());
}
// ...
}
ProductId 如下所示:
class ProductId
{
public Guid Value { get; }
public ProductId(Guid value)
{
// validation
Value = value
}
}
我在文档中没有找到关于该主题的任何信息。有谁知道这样做吗?
解决方案
文档标识符(文档 ID)始终是与文档关联的字符串。
请参阅:https ://ravendb.net/docs/article-page/5.0/csharp/server/kb/document-identifier-generation
您可以让服务器为您生成 Guid:.
请参阅:https
://ravendb.net/docs/article-page/5.0/csharp/server/kb/document-identifier-generation#guid
要执行此操作,Id = string.Empty
请参阅:https ://ravendb.net/docs/article -page/5.0/csharp/client-api/document-identifiers/working-with-document-identifiers#autogenerated-ids
否则,也许:
将当前的 Id 属性重构为:
public ProductId MyId { get; }
并使用
MyId = new ProductId(Guid.NewGuid());
Product
在类上添加另一个属性
public string Id { get; set; }
使用OnBeforeStore分配:
Id = MyId.Value
推荐阅读
- excel - 将参数从 Excel 导入 GAMS:全为零
- python - 如何防止一次又一次地处理相同的相似帧
- db2 - 如何在 RPGLE 中的“XMLTABLE”嵌入式 SQL 语句中跨多行断开长字符串?
- c++ - C ++错误未初始化变量
- java - 有没有办法让 IntelliJ 向我显示文件中堆栈跟踪中发生错误的实际行?
- c# - 当datagridview数据绑定时如何编辑行
- r - 使用线性方程过滤散点图中的数据点
- google-smart-home - 智能家居测试套件无法执行
- javascript - Dialogflow 以相同的意图实现两个请求
- javascript - 将 .py -> .html 值发送到 .js(Django、Mapbox)