EF Core позволяет вам указать личное поле для использования в базе данных, используя строковый синтаксис:
modelBuilder.Entity<MyEntity>().Property("myField");
И вы можете указать преобразования значений для свойств:
modelBuilder
.Entity<MyEntity>()
.Property(e => e.MyProperty)
.HasConversion(
v => v.ToInt(),
v => new MyProperty(v));
Но так ли этоМожно указать преобразование значения для частного поля?Это не компилируется, предположительно, потому что тип неизвестен:
// won't work
modelBuilder.Entity<MyEntity>().Property("myField")
.HasConversion(
v => v.ToInt(),
v => new MyFieldType(v));
Также нельзя использовать параметр универсального типа, потому что они предназначены для предопределенных преобразователей значений, предоставляемых EF Core:
// won't work
modelBuilder.Entity<MyEntity>().Property("myField")
.HasConversion<MyFieldType>(
v => v.ToInt(),
v => new MyFieldType(v));
Можно ли определить ValueConversion для частного поля?