FullAuditedEntity、ObjectMapper:创建新条目或删除时 CreatorUserId 为空
FullAuditedEntity, ObjectMapper: CreatorUserId Null when Creating New Entry or Deleting
我一直在通过 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);
}
我的对象映射函数有什么问题吗?
问题出在默认管理员上,因为它没有租户。
我从 另一个租户创建了一个新用户 并使用新用户的凭据创建了 post 数据。然后我 post 通过 在 post 正文 中省略 tenantId
的数据。而且效果很好。
我曾经在 默认管理员 (主机租户)的 post 数据对象中指定 tenantId
。如果我 不指定 tenantId
或输入 0
,它会给出 Server Internal Error: 500
。因此,我必须 在 post 正文对象 中指定 tenantId
。我认为正因为如此,它以某种方式混淆了 API 内的映射,因为 default Admin 没有租户 .
你的对象映射函数没有问题。
I experimented with two Object Mapping Methods... By right, both CreatorUserId and CreationTime should have values by this stage.
CreatorUserId
和 CreationTime
只有在调用 SaveChanges()
后才有值。
I have to put [TenantId] manually in the JSON post object, and it shows in the database.
你不应该那样做。 CreatorUserId
是 only set if the entity belongs to the current tenant.
I can see UserId which is 1 in breakpoint. Somehow it gets ignored during mapping.
以 "Default" 租户管理员身份创建实体的正确方法是以租户管理员身份登录。
UserId = 1
表示您以主机管理员身份登录。 "Default" 租户管理员有 UserId = 2
.
If I don't specify tenantId or put 0, it gives Server Internal Error: 500.
如果您希望主机创建 Rule
,请确保它实现 IMayHaveTenant
而不是 IMustHaveTenant
。
我一直在通过 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);
}
我的对象映射函数有什么问题吗?
问题出在默认管理员上,因为它没有租户。
我从 另一个租户创建了一个新用户 并使用新用户的凭据创建了 post 数据。然后我 post 通过 在 post 正文 中省略 tenantId
的数据。而且效果很好。
我曾经在 默认管理员 (主机租户)的 post 数据对象中指定 tenantId
。如果我 不指定 tenantId
或输入 0
,它会给出 Server Internal Error: 500
。因此,我必须 在 post 正文对象 中指定 tenantId
。我认为正因为如此,它以某种方式混淆了 API 内的映射,因为 default Admin 没有租户 .
你的对象映射函数没有问题。
I experimented with two Object Mapping Methods... By right, both CreatorUserId and CreationTime should have values by this stage.
CreatorUserId
和 CreationTime
只有在调用 SaveChanges()
后才有值。
I have to put [TenantId] manually in the JSON post object, and it shows in the database.
你不应该那样做。 CreatorUserId
是 only set if the entity belongs to the current tenant.
I can see UserId which is 1 in breakpoint. Somehow it gets ignored during mapping.
以 "Default" 租户管理员身份创建实体的正确方法是以租户管理员身份登录。
UserId = 1
表示您以主机管理员身份登录。 "Default" 租户管理员有 UserId = 2
.
If I don't specify tenantId or put 0, it gives Server Internal Error: 500.
如果您希望主机创建 Rule
,请确保它实现 IMayHaveTenant
而不是 IMustHaveTenant
。