В настоящее время я пытаюсь изменить параметры в DbCommandInterceptor, чтобы иметь возможность преобразовать дату и время в UT C перед сохранением. В некоторых случаях я не хочу преобразовывать параметр на основе свойства entity.
пример:
public class UtcReadInterceptor : DbCommandInterceptor
{
public override void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
foreach (DbParameter p in command.Parameters)
{
if (p.DbType != DbType.DateTime2 || ShouldSkip(p)) { continue; }
var date = p.Value as DateTime?;
if (!date.HasValue) { continue; }
p.Value = date.Value.ToUniversalTime()
}
base.ReaderExecuting(command, interceptionContext);
}
}
private bool ShouldSkip(DbParameter p)
{
// Look up the parameter in EF metadata and choose ignore or let through.
}
Что я ищу, так это какой-то способ узнать, является ли данное поле не должен быть преобразован в UT C. Мне нужно как-то либо посмотреть, какое это поле (и какая сущность) в контексте, или каким-либо образом пометить его в каком-то поиске, чтобы можно было узнать, пропустить его или нет.
Кто-нибудь знает как соотнести параметр с полем в сущности EF или как-то изменить параметр из EF, чтобы узнать, можно ли его пропустить при преобразовании параметров даты и времени в UT C?