我一直通过API将数据发布到完整审核实体。由于它是FullAuditedEntity
,它应该自动使用creatorId,creationTime和其他几个列值创建。但是当我在数据库中签入时, CreatorUserID
为null
,即使CreationTime
存在。 应该1
我发布了默认管理员。此外,当我删除行时,会发生同样的情况:我只能看到DeletionTime
但不会看到DeleterUserId
。
以下是我可以使用断点查看的API端点捕获的数据:
我尝试使用两个对象映射方法创建output
和output2
,但是它们都提供相同的null
值 CreatorUserId
。如果合适,CreatorUserId
和CreationTime
都应该具有此阶段的值。
[AbpAuthorize]
public async Task<Rule> CreateAsync(CreateRuleInput input)
{
Rule output = Mapper.Map<CreateRuleInput, Rule>(input);
Rule output2 = ObjectMapper.Map< Rule>(input);
return await _ruleManager.Create(output);
}
我的对象映射功能有什么问题吗?
答案 0 :(得分:1)
您的对象映射功能没有任何问题。
我尝试了两种对象映射方法......右边,CreatorUserId和CreationTime都应该具有此阶段的值。
CreatorUserId
和CreationTime
仅在SaveChanges()
被调用后才有值。
我必须手动将[TenantId]放在JSON post对象中,它会显示在数据库中。
你不应该这样做。 CreatorUserId
为only set if the entity belongs to the current tenant。
我可以看到UserId在断点处为1。不知怎的,它在映射过程中被忽略了。
将实体创建为“默认”租户管理员的正确方法是以租户管理员身份登录。
UserId = 1
表示您以主机管理员身份登录。 “默认”租户管理员有UserId = 2
。
如果我没有指定tenantId或者输入0,则会给出服务器内部错误:500。
如果您希望主持人创建Rule
,请确保其实施IMayHaveTenant
而不是IMustHaveTenant
。
答案 1 :(得分:0)
问题在于默认的管理员,因为它没有租户。
从其他租户,我创建了一个新用户并使用新用户的凭据发布数据。然后我通过在帖子正文中留出tenantId
发布数据。它运作得很好。
我曾在默认管理员(主机租户)的帖子数据对象中指定tenantId
。如果我未指定tenantId
或放置0
,则会Server Internal Error: 500
。所以,我必须在帖子正文对象中指定tenantId
。我认为因为它在某种程度上混淆了API中的映射,因为默认管理员没有租户。