无法在ASP.NET Zero中启用实体历史记录

问题描述 投票:1回答:2

我正在使用ASP.NET Zero。项目版本:5.1.0和.NET Core 2.0模板。我正在尝试为我的实体启用实体历史记录,以便我可以看到该表的已删除和旧列值。

实体类:

[Table("TestingEntity")]
[Audited]
public class TestingEntity : AuditedEntity , IMayHaveTenant
{
    public int? TenantId { get; set; }

    public virtual string Code { get; set; }
}

ApplicationModule类:

public class MyCompanyApplicationModule : AbpModule
{
    public override void PreInitialize()
    {
        // ...

        Configuration.EntityHistory.IsEnabledForAnonymousUsers = true;

        Configuration.EntityHistory.Selectors.Add(new NamedTypeSelector("Abp.AuditedEntities", type => typeof(IAudited).IsAssignableFrom(type)));
    }

    // ...
}

运行以下查询不会产生任何结果。

SELECT * FROM [AbpEntityChangeSets]
SELECT * FROM [AbpEntityPropertyChanges]
SELECT * from [AbpEntityChanges]

参考:https://aspnetboilerplate.com/Pages/Documents/Entity-History

Update

当我删除实体项时,它没有给出正确的结果。

它在[AbpEntityPropertyChanges]表中为每个属性插入记录,旧值和新值相同。

并且没有明确的信息表明该实体项目已被删除,删除时间和DeletedBy。

这是由于在我的实体类中使用AuditedEntity吗?我正在使用硬删除,所以我想不要将这些列添加到表中:删除,删除时间和DeletedBy。

c# configuration aspnetboilerplate
2个回答
3
投票

ASP.NET Zero中禁用了实体历史记录。你可以启用它:

Configuration.EntityHistory.IsEnabled = true;

Update

当我删除实体项时,它没有给出正确的结果。

它在[AbpEntityPropertyChanges]表中为每个属性插入记录,旧值和新值相同。

这已经在PR #2977中得到解决,它将与ABP v3.5一起发布。

并且没有明确的信息表明该实体项目已被删除,删除时间和DeletedBy。

这是由于在我的实体类中使用AuditedEntity吗?我正在使用硬删除,所以我想不要将这些列添加到表中:删除,删除时间和DeletedBy。

您不会在AbpEntityPropertyChanges表中找到那些,因为这些不是属性更改。

Additional information

  • AbpEntityChangeSetsAbpEntityChanges表之间的关系:EntityChange.cs public class EntityChange : Entity<long>, IMayHaveTenant { /// <summary> /// Gets/sets change set id, used to group entity changes. /// </summary> public virtual long EntityChangeSetId { get; set; } // ... }
  • EntityChange.ChangeType的可能值:EntityChangeType.cs public enum EntityChangeType : byte { Created = 0, Updated = 1, Deleted = 2 }

我们是否计划为此功能添加UI?这样我们就可以从UI中看到实体历史。

这已在ASP.NET Zero 5.4.0中添加。


1
投票

我通过将以下值设置为true来对文件ProjectName.EntityFrameworkCore \ EntityFrameworkCore \ ProjectNameEntityFrameworkCoreModule.cs进行以下更改来解决此问题,您需要启用实体历史记录。

Configuration.EntityHistory.IsEnabled = true;

你可以参考https://github.com/aspnetzero/aspnet-zero-core/issues/818#issuecomment-365250173

© www.soinside.com 2019 - 2024. All rights reserved.