Как мне убедиться, что EF создает и хранит приватное поле _orderValue?
Вы можете избавиться от поля поддержки, лучше используя EF Core 2.1 (который находится в Release Candidate 1 с 7 мая 2018 г.) можно использовать функцию преобразования значений, объясненную Microsoft здесь :
Преобразователи значений позволяют преобразовывать значения свойств, когдачтение или запись в базу данных.Это преобразование может быть из одного значения в другое того же типа (например, шифрование строк) или из значения одного типа в значение другого типа (например, преобразование значений перечисления в и из строк в базе данных.)
Так что для вашего случая вы можете просто удалить вспомогательное поле.Вам это больше не нужно.Ваш класс должен выглядеть следующим образом:
public class Order
{
public int Id { get; set; }
public Money OrderValue { get; set; }
}
И в вашем методе OnModelCreating
вы настраиваете преобразование, как показано ниже:
modelBuilder.Entity<Order>()
.Property(p => p.OrderValue)
.HasConversion(
v => v.Amount, // <- This is used when storing to the DB
v => new Money(v) // <- this is used when reading data from your DB
);
Вот и все.На самом деле, это версия кандидата, но Microsoft говорит:
EF Core 2.1 RC1 - это версия, готовая к работе, что означает, что как только вы проверите, что ваше приложение работает правильно с RC1, вы можете использовать его в работеи получить поддержку от Microsoft, но вы все равно должны обновить ее до окончательного стабильного выпуска, как только он станет доступен.