Ядро Entity Framework ValueConverter

#c# #entity-framework-core

Вопрос:

Чего я пытаюсь достичь

Я хотел бы создать ValueConverter для своего приложения, чтобы я мог шифровать строковые значения в своей базе данных. Я знаю, что это существует, я бы предпочел сделать это сам.

Проблема, с которой я сталкиваюсь

Я получаю System.NullReferenceException: Object reference not set to an instance of an object. ошибку, когда пытаюсь вызвать свой контекст. Я пытался удалить свойства, переписать конструкторы, изменить статические методы, но безуспешно.

Код

Преобразователь Значений
 public class AesGcmConverter : ValueConverter<string, string>
{
    public AesGcmConverter(ConverterMappingHints mappingHints = default) : base(EncryptExpr, DecryptExpr, mappingHints)
    {
            
    }
        
    static Expression<Func<string, string>> DecryptExpr = x => new string(x.Reverse().ToArray());
    static Expression<Func<string, string>> EncryptExpr = x => new string(x.Reverse().ToArray());
}
 
EF
 protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    foreach (var entityType in modelBuilder.Model.GetEntityTypes())
    {
        foreach (var property in entityType.GetProperties())
        {
            var attributes = property.PropertyInfo.GetCustomAttributes(typeof(EncryptedAttribute), false);
            if (attributes.Any())
            {
                property.SetValueConverter(new AesGcmConverter());
            }
        }
    }
}