FullAuditedEntity,ObjectMapper:CreatorUserId在创建新条目或删除

时间:2018-01-05 07:31:33

标签: c# asp.net-web-api objectmapper object-object-mapping asp.net-boilerplate

我一直通过API将数据发布到完整审核实体。由于它是FullAuditedEntity,它应该自动使用creatorId,creationTime和其他几个列值创建。但是当我在数据库中签入时, CreatorUserIDnull ,即使CreationTime存在。 应该1我发布了默认管理员。此外,当我删除行时,会发生同样的情况:我只能看到DeletionTime但不会看到DeleterUserId

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

enter image description here

我尝试使用两个对象映射方法创建outputoutput2,但是它们都提供相同的null CreatorUserId。如果合适,CreatorUserIdCreationTime都应该具有此阶段的值。

        [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);
        }

我的对象映射功能有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您的对象映射功能没有任何问题。

  

我尝试了两种对象映射方法......右边,CreatorUserId和CreationTime都应该具有此阶段的值。

CreatorUserIdCreationTime仅在SaveChanges()被调用后才有值。

  

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

你不应该这样做。 CreatorUserIdonly 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中的映射,因为默认管理员没有租户