【问题标题】:Can't enable Entity History in ASP.NET Zero无法在 ASP.NET 零中启用实体历史记录
【发布时间】:2018-02-13 07:26:06
【问题描述】:

我正在使用 ASP.NET 零。项目版本: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

更新

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

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

并且没有明确的信息表明这个实体项被删除了,它的删除时间,以及DeletedBy。

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

【问题讨论】:

    标签: c# configuration aspnetboilerplate


    【解决方案1】:

    在 ASP.NET 零中禁用实体历史记录。您可以启用它:

    Configuration.EntityHistory.IsEnabled = true;
    

    更新

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

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

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

    并且没有明确的信息表明这个实体项被删除,它的删除时间,以及DeletedBy。

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

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

    其他信息

    • 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 中看到 Entity History。

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

    【讨论】:

      【解决方案2】:

      我已通过在文件 ProjectName.EntityFrameworkCore\EntityFrameworkCore\ProjectNameEntityFrameworkCoreModule.cs 中将以下值设置为 true 来解决此问题,您需要启用实体历史记录。 p>

      Configuration.EntityHistory.IsEnabled = true;
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-07
        • 1970-01-01
        • 2012-01-01
        • 2010-11-30
        • 2013-06-05
        • 1970-01-01
        • 2018-09-22
        • 1970-01-01
        相关资源
        最近更新 更多