EF Core 在配置中标记一个 属性 并检查 属性 是否包含 UoW 中的标记
EF Core Mark a property in configuration and check if that property contains the mark in UoW
EF Core 是否支持此功能?
我需要在配置中标记属性并使用更改跟踪器检查 属性 是否包含 UoW 中的指定标记。
例如这样的事情:
builder.Property(x => x.Id)
.DisableAudit();
并在 UoW 中使用它:
var auditables = _context
.ChangeTracker
.Entries<IAuditable>()
.ToList();
foreach (var entity in auditables)
{
foreach (var property in entity.Properties)
{
if (AuditIsDisabled(property))
{
// ...
}
可以通过注解实现:
public static class AuditExtensions
{
public const string CustomDisableAudit = "custom:disable_audit";
public static PropertyBuilder<TProperty> DisableAudit<TProperty>(this PropertyBuilder<TProperty> property)
{
return property.HasAnnotation(CustomDisableAudit, true);
}
public static bool IsAuditDisabled(this PropertyEntry propertyEntry)
{
return propertyEntry.Metadata.IsAuditDisabled();
}
public static bool IsAuditDisabled(this IProperty property)
{
return property.FindAnnotation(CustomDisableAudit)?.Value as bool? == true;
}
}
EF Core 是否支持此功能?
我需要在配置中标记属性并使用更改跟踪器检查 属性 是否包含 UoW 中的指定标记。
例如这样的事情:
builder.Property(x => x.Id)
.DisableAudit();
并在 UoW 中使用它:
var auditables = _context
.ChangeTracker
.Entries<IAuditable>()
.ToList();
foreach (var entity in auditables)
{
foreach (var property in entity.Properties)
{
if (AuditIsDisabled(property))
{
// ...
}
可以通过注解实现:
public static class AuditExtensions
{
public const string CustomDisableAudit = "custom:disable_audit";
public static PropertyBuilder<TProperty> DisableAudit<TProperty>(this PropertyBuilder<TProperty> property)
{
return property.HasAnnotation(CustomDisableAudit, true);
}
public static bool IsAuditDisabled(this PropertyEntry propertyEntry)
{
return propertyEntry.Metadata.IsAuditDisabled();
}
public static bool IsAuditDisabled(this IProperty property)
{
return property.FindAnnotation(CustomDisableAudit)?.Value as bool? == true;
}
}