entity-framework - MassTransit 实体框架审计存储 SentTime 不可用
问题描述
我已经使用实体框架存储和 SQL Server 设置了对 MassTransit 消息的审核。默认情况下,审计记录表具有以下架构:
CREATE TABLE [dbo].[EfCoreAudit](
[AuditRecordId] [int] IDENTITY(1,1) NOT NULL,
[MessageId] [uniqueidentifier] NULL,
[ConversationId] [uniqueidentifier] NULL,
[CorrelationId] [uniqueidentifier] NULL,
[InitiatorId] [uniqueidentifier] NULL,
[RequestId] [uniqueidentifier] NULL,
[SourceAddress] [nvarchar](max) NULL,
[DestinationAddress] [nvarchar](max) NULL,
[ResponseAddress] [nvarchar](max) NULL,
[FaultAddress] [nvarchar](max) NULL,
[InputAddress] [nvarchar](max) NULL,
[ContextType] [nvarchar](max) NULL,
[MessageType] [nvarchar](max) NULL,
[Custom] [nvarchar](max) NULL,
[Headers] [nvarchar](max) NULL,
[Message] [nvarchar](max) NULL,
CONSTRAINT [PK_EfCoreAudit]
PRIMARY KEY CLUSTERED ([AuditRecordId] ASC)
)
其中不包括 SentTime 列。我没有将该属性添加到所有应用程序消息类型以使其包含在消息列数据中,而是寻找更通用的解决方案。
一种选择是在消息头中添加该信息,另一种选择是在 MessageAuditMetadata.Custom 字典中添加 KeyValuePair。但在我看来,SentTime 信息应该默认存在。
没有 SentTime 列有什么原因吗?
我查看了 MassTransit 代码,发现 SendContext 和 PublishContext 接口没有该属性,而 MessageContext(以及因此的 ConsumeContext)有。
是否有任何其他替代方法可以将该信息添加到比上述更推荐的审计记录中?
解决方案
推荐阅读
- css - 使用 Gulp、PostCSS 和 PurgeCSS 缩小 SASS
- javascript - 该块在第一次加载时显示在上块的顶部,并在页面刷新时固定
- laravel - 将来自不同表的数据合并到一个集合中
- java - Java 8 可选 - 我应该在这个例子中使用它吗
- java - 我无法访问类的方法
- python - 如何在二维列表中找到两个特定条件?
- oauth-2.0 - 客户端凭据流发送 401 错误,而单个流正在使用 Microsoft Graph API
- c# - .Net Core 警告未配置 XML 加密器
- ios - 单个购物车文件以指定和安装多个目标的依赖项
- regex - 如何在替换的正则表达式部分将变量插入到正则表达式模式中?