2

我一直在通过 API 将数据发布到经过全面审核的实体。事实上FullAuditedEntity,它应该使用 creatorId、creationTime 和其他几个列值自动创建。但是当我签入数据库时​​,CreatorUserID即使null存在CreationTime应该是1因为我使用默认管理员发布的。此外,当我删除行时,也会发生同样的情况:我只能看到DeletionTime但不能DeleterUserId

以下是我可以使用断点看到的 API 端点捕获的数据:

在此处输入图像描述

我尝试了两种创建对象映射方法outputoutput2它们nullCreatorUserId. 正确地说,在这个阶段两者都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);
        }

我的对象映射函数有什么问题吗?

4

2 回答 2

2

您的对象映射函数没有任何问题。

我尝试了两种对象映射方法...正确地,CreatorUserId 和 CreationTime 在这个阶段都应该有值。

CreatorUserId并且只有在被调用CreationTime之后才有值。SaveChanges()

我必须将 [TenantId] 手动放入 JSON post 对象中,它会显示在数据库中。

你不应该那样做。CreatorUserId当实体属于当前租户时才设置

我可以看到断点中的 UserId 为 1。不知何故,它在映射过程中被忽略了。

将实体创建为“默认”租户管理员的正确方法是以租户管理员身份登录。

UserId = 1表示您以主机管理员身份登录。“默认”租户管理员拥有UserId = 2.

如果我不指定tenantId 或输入0,它会给出服务器内部错误:500。

如果要创建主机Rule,请确保它IMayHaveTenant没有实现IMustHaveTenant

于 2018-01-05T09:32:47.617 回答
0

问题在于默认管理员,因为它没有租户。

另一个租户,我创建了一个新用户并使用新用户的凭据发布数据。然后我通过在帖子正文中省略tenantId来发布数据。它工作得很好。

我曾经tenantId在帖子数据对象中指定默认管理员(主机租户)。如果我不指定tenantId或不放0,它会给出Server Internal Error: 500. 所以,我必须在 post body object中指定tenantId。我认为因为默认 Admin 没有 tenant ,所以它以某种方式与 API 内部的映射混淆了。

于 2018-01-05T09:08:51.693 回答