RavenDB 4.2 - 自动生成的 ID 字段
RavenDB 4.2 - Auto Generated ID Field
我正在使用 RavenDB 和 .NetCore 3.1 MVC 创建一个基本的 API。我正在使用自动生成的 ID 字段,即 "Modelnames/123-ClusterInstance"。由于我的控制器将默认为 myapi.com/api/ssolinks/{id},该字段最终将成为 myapi.com/api/ssolinks/SSOLinks/123-ClusterInstance(id ).你会如何建议我解决这个问题?我在这里找到了一个旧的 SO post:Autogenerated Id in RavenDB 但文档似乎不见了。我通过将它附加到 HTTP 请求中来解决它,但感觉很老套。感谢您的任何输入!
namespace myAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SSOLinksController : ControllerBase
{
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public IActionResult Get(string Id)
{
//I want to NOT do this if possible :D
Id = $"SSOLinks/{Id}";
var store = DocumentStoreHolder.CreateStore();
using (IDocumentSession session = store.OpenSession())
{
List<SSOLink> ssolinks = session
.Query<SSOLink>()
.Where(x => x.Id == Id)
.ToList();
return Ok(ssolinks);
}
}
}
}
您当前的实现似乎没问题 - 您从 URL 参数获取 ID,然后从 RavenDB 服务器获取它。
您可以在 URL 参数中使用 startswith
& matches
。
请参阅 查询字符串参数 中的 Get Documents By Prefix
您可以在 Session 中使用 LoadStartingWith
即
var linkResult = session
.Advanced
.LoadStartingWith<SSOLink>("SSOLinks/", <the Id>)
.FirstOrDefault();
我正在使用 RavenDB 和 .NetCore 3.1 MVC 创建一个基本的 API。我正在使用自动生成的 ID 字段,即 "Modelnames/123-ClusterInstance"。由于我的控制器将默认为 myapi.com/api/ssolinks/{id},该字段最终将成为 myapi.com/api/ssolinks/SSOLinks/123-ClusterInstance(id ).你会如何建议我解决这个问题?我在这里找到了一个旧的 SO post:Autogenerated Id in RavenDB 但文档似乎不见了。我通过将它附加到 HTTP 请求中来解决它,但感觉很老套。感谢您的任何输入!
namespace myAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SSOLinksController : ControllerBase
{
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public IActionResult Get(string Id)
{
//I want to NOT do this if possible :D
Id = $"SSOLinks/{Id}";
var store = DocumentStoreHolder.CreateStore();
using (IDocumentSession session = store.OpenSession())
{
List<SSOLink> ssolinks = session
.Query<SSOLink>()
.Where(x => x.Id == Id)
.ToList();
return Ok(ssolinks);
}
}
}
}
您当前的实现似乎没问题 - 您从 URL 参数获取 ID,然后从 RavenDB 服务器获取它。
您可以在 URL 参数中使用 startswith
& matches
。
请参阅 查询字符串参数 中的 Get Documents By Prefix
您可以在 Session 中使用 LoadStartingWith 即
var linkResult = session
.Advanced
.LoadStartingWith<SSOLink>("SSOLinks/", <the Id>)
.FirstOrDefault();