我正在开发一个小项目,我们将 JsonApiDotnetCore 与 EF 结合使用。我正在实现库文档(ResourceDefinition - OnDeserialize() 和 OnWritting() 方法)中描述的管道,并且我可以仅在 OnDeserialize() 方法中毫无问题地从数据库获取数据。在 OnWriting() 方法中,会获取实体,但所有属性都有默认值(零和空),即使我在查询期间使用 .Include() 也是如此。
这是我正在使用的代码片段:
var dbUserPermission = _portalDbContext.UserPermission
.Include(userPermission => userPermission.User)
.FirstOrDefault(f => f.CustomersId == customer.Id)
如果我在 OnDeserialize() 或 OnWritting() 方法(在
Customer
资源定义中)执行此查询,结果会有所不同。在 OnDeserialize() 中,我正确获取实体和所有相关数据,在 OnWritting() 中,我仅获取填充有默认值且不包含关系的实体。
这是我在 Program.cs 中注册的 json:api:
builder.Services.AddJsonApi<PortalDbContext>(options =>
{
options.IncludeExceptionStackTraceInErrors = true;
options.IncludeRequestBodyInErrors = true;
options.UseRelativeLinks = true;
options.SerializerOptions.WriteIndented = true;
options.SerializerOptions.Converters.Add(new JsonStringEnumConverter());
}
, discovery => discovery.AddCurrentAssembly()
);
感谢您的任何提示。我找不到有类似问题的人。
您能否前往 https://github.com/json-api-dotnet/JsonApiDotNetCore/issues/new/choose 并创建包含可运行的重现项目的错误报告?