Как в. Net основной доменной модели заменить валидацию примитивных типов на объекты-значения? - PullRequest
0 голосов
/ 29 февраля 2020

. Net Core 3

По это и это примеры Я пытаюсь создать проверку модели предметной области с объектами значений. Но я получаю ошибку.

// Value object TitleValue
 public class TitleValue : ValueObject
    {

        public string Value { get; }

        public TitleValue()
        {
        }

        public TitleValue(string value)
        {
            Value = value;
            Create(value);
        }

        public static Result<TitleValue> Create(string input)
        {
            if (string.IsNullOrWhiteSpace(input))
                return Result.Fail<TitleValue>(Errors.General.ValueIsRequired().Serialize());

            string title = input.Trim();

            if (title.Length > 2)
                return Result.Fail<TitleValue>(Errors.General.ValueIsTooLong().Serialize());



            return Result.Ok(new TitleValue(title));
        }


        protected override IEnumerable<object> GetEqualityComponents()
        {
            yield return Value;
        }
    }
// Domain model 
 public class Navigation
    {
        [Key]
        public int Id { get; set; }

        public TitleValue Title { get; set; } // there is problem
        public string Slug { get; set; }
        public byte IsCategory { get; set; }
        public int Sort { get; set; }
        public int Parent { get; set; }
        public string Path { get; set; }
        public ICollection<EdRoleNavigation> RoleNavigations { get; set; }
    }

Я получаю ошибку:

Произошло необработанное исключение при обработке запроса. InvalidOperationException: тип сущности 'TitleValue' требует определения первичного ключа. Если вы намеревались использовать тип объекта без ключа, вызовите HasNoKey (). Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator.ValidateNonNullPrimaryKeys (модель IModel, регистратор IDiagnosticsLogger)

. Net ядро ​​считает, что TitleValue является сущностью.

Как я могу исправить эту ошибку и получить хорошую проверку?

...