You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
IMaterializationInterceptor allows the interception of individual entity materialization. Conceptually there must be a preceding step where EF resolves the entity type that a database row will be materialized into. It may be useful to intercept that type resolution.
My use case for this feature would be to examine authorization attributes on the entity type and throw an exception if the current user is not authorized to access that entity type. I'm currently doing this experimentally with an IMaterializationInterceptor. This feature request is based on the possibly incorrect assumption that type resolution only occurs once for a result set, as opposed to materialization which occurs once for every row. My entire use case may prove to be a stupid idea, but there may be more legitimate use cases for a type resolution interceptor.
The text was updated successfully, but these errors were encountered:
Type resolution does occur once for every row (roughly). Currently this logic is hardcoded but might be possible to do something like this after #32923 is implemented.
@kjkrum I'd be interested in more context on exactly what you're trying to achieve, i.e. how exactly you would vary the entity type being materialized, and why - there may be simpler ways to achieve the same overall goal.
@roji I'm not interested in changing the entity type, only examining its attributes to see if the current user is authorized to load entities of that type. In other words, roughly speaking, table-level permissions. A materialization interceptor works for this, and performance isn't an issue yet, but maybe it could be more efficient.
IMaterializationInterceptor
allows the interception of individual entity materialization. Conceptually there must be a preceding step where EF resolves the entity type that a database row will be materialized into. It may be useful to intercept that type resolution.My use case for this feature would be to examine authorization attributes on the entity type and throw an exception if the current user is not authorized to access that entity type. I'm currently doing this experimentally with an
IMaterializationInterceptor
. This feature request is based on the possibly incorrect assumption that type resolution only occurs once for a result set, as opposed to materialization which occurs once for every row. My entire use case may prove to be a stupid idea, but there may be more legitimate use cases for a type resolution interceptor.The text was updated successfully, but these errors were encountered: