У меня есть ValueObject с именем Money с такой подписью:
public class Money : ValueObject
{
public decimal Amount { get; private set; }
public Currency Currency { get; private set; }
private Money(decimal amount, Currency currency = Currency.Nigerian_Naira)
{
Guard.Against.Zero(amount, nameof(amount));
Amount = amount;
Currency = currency;
}
private Money(){}
public static Money Create(decimal amount, Currency currency = Currency.Nigerian_Naira)
{
return new Money(amount, currency);
}
public bool IsEmpty()
{
return Amount == 0m && Currency == Currency.Nigerian_Naira;
}
protected override IEnumerable<object> GetAtomicValues()
{
yield return Amount;
yield return Currency;
}
}
и у меня есть сущность, которой принадлежит этот объект значения следующим образом:
public class Account : BaseEntity
{
public Account()
{
AccountId = Guid.NewGuid();
}
public Guid AccountId { get; set; }
[Required]
[StringLength(25)]
public string AccountName { get; set; }
[Required]
public Money AccountBalance { get; set; }
[Required]
public bool IsActivated { get; set; }
public List<Entity2> Entity2 { get; set; }
public List<Entity1> Entity1 { get; set; }
}
Я настроил владельца в контексте следующим образом:
modelBuilder.Entity<Account>()
.OwnsOne(c => c.AccountBalance);
Это моя базовость, которая в основном несет простые свойства, такие как:
public abstract class BaseEntity
{
public bool IsDeleted { get; set; }
public DateTimeOffset CreatedDate { get; set; }
public DateTimeOffset UpdatedDate { get; set; }
}
Теперь, если я хочу сохранить изменения в своей базе данных в памяти в моем модульном тесте, у меня появляется сообщение об ошибке:
Error Message:
System.InvalidOperationException : The property 'UpdatedDate' on entity type
'CashAccount.AccountBalance#Money' could not be found. Ensure that the
property exists and has been included in the model.
Свойство updatedDate относится к базовому типу сущности, от которого у меня наследуются все сущности. Я расчесываю документы и не вижу ничего, что подсказывало бы мне об этом странном поведении.
Я в основном пытаюсь сохранить Учетную запись в базе данных, и она выдает мне эту ошибку, говоря, что у Money нет свойства updatedDate, которое является свойством, которое должно принадлежать сущностям. Это никогда не было проблемой со сложными типами EF6.