EF Core DbDataReader 结果在拦截器中发生变化
EF Core DbDataReader result changing in interceptor
伙计们。
我有一个关于 EF Core DbCommandInterceptor 的问题。
让我们有一个 class 有 2 个像这样的字段
public class User
{
public Guid Id { get; set; }
public string SameData { get; set; }
}
public class TestClass
{
public Guid Id { get; set; }
public Guid TestClassId { get; set; }
[NotMapperd, MyAttr]
public TestClass TestClass { get; set; }
}
其中 User
和 TestClass
都位于不同的上下文中(例如,UserDbContext
、TestDbContext
)。 MyAttr
是标记属性,仅此而已。
所以,我想编写一个拦截器,每次我们尝试获取有关 TestClass
es 的信息时都会出现,但在获取数据后,它应该获取有关 User 的附加数据,并向 UserDbContext 发出交叉请求(有可能,因为在命令执行后我有 User
Id
并且可以在请求中使用这个 Id
)
我知道,在这种情况下应该是 DbCommandInterceptor.ReaderExecuted
或 DbCommandInterceptor.ReaderExecutedAsync
,但我不明白如何在结果中获取有关对象的信息(我可以获取行,但我不明白是什么我应该怎么做,我应该如何映射它)。如果需要,我可以在项目中使用其他库(如 Dapper 和其他库)。
谁能帮我搞定
- 结果类型 - 具体实体类型或实体集合类型?
- 结果作为 C# 对象(POCO 或 POCO 集合)?
谢谢。
I know, that it should be DbCommandInterceptor.ReaderExecuted or DbCommandInterceptor.ReaderExecutedAsync in this case, but I cannot understand how to get information about objects in the result
EF 命令拦截器不支持。您可以用不同的 DataReader 替换它。但是生成的查询是为了填充一个特定的对象图,拦截器没有公开它API。
伙计们。
我有一个关于 EF Core DbCommandInterceptor 的问题。
让我们有一个 class 有 2 个像这样的字段
public class User
{
public Guid Id { get; set; }
public string SameData { get; set; }
}
public class TestClass
{
public Guid Id { get; set; }
public Guid TestClassId { get; set; }
[NotMapperd, MyAttr]
public TestClass TestClass { get; set; }
}
其中 User
和 TestClass
都位于不同的上下文中(例如,UserDbContext
、TestDbContext
)。 MyAttr
是标记属性,仅此而已。
所以,我想编写一个拦截器,每次我们尝试获取有关 TestClass
es 的信息时都会出现,但在获取数据后,它应该获取有关 User 的附加数据,并向 UserDbContext 发出交叉请求(有可能,因为在命令执行后我有 User
Id
并且可以在请求中使用这个 Id
)
我知道,在这种情况下应该是 DbCommandInterceptor.ReaderExecuted
或 DbCommandInterceptor.ReaderExecutedAsync
,但我不明白如何在结果中获取有关对象的信息(我可以获取行,但我不明白是什么我应该怎么做,我应该如何映射它)。如果需要,我可以在项目中使用其他库(如 Dapper 和其他库)。
谁能帮我搞定
- 结果类型 - 具体实体类型或实体集合类型?
- 结果作为 C# 对象(POCO 或 POCO 集合)?
谢谢。
I know, that it should be DbCommandInterceptor.ReaderExecuted or DbCommandInterceptor.ReaderExecutedAsync in this case, but I cannot understand how to get information about objects in the result
EF 命令拦截器不支持。您可以用不同的 DataReader 替换它。但是生成的查询是为了填充一个特定的对象图,拦截器没有公开它API。