EF Core - Укажите символы, которые должны быть в строке для сохранения для успеха - PullRequest
0 голосов
/ 25 марта 2020

Работая над одним из моих собственных проектов свободного времени, используя Entity Framework Core для сохранения данных, я хотел бы настроить через Fluent Api, что свойство типа string должно содержать выбор символа, чтобы оно действовало, когда Сохранение.

Учитывая пользователя как так ...

public class User : IUser
    {
        public int Id { get; set; }
        public byte[] Version { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public string Email { get; set; }

        ...
    }

И настраивая с помощью Fluent Api вот так ...

public class UserConfig : EntityConfig<User>
    {
        public override void Configure(EntityTypeBuilder<User> builder)
        {
            base.Configure(builder);

            ...

            builder.HasIndex(x => x.Username).IsUnique();
            builder.Property(x => x.Username).HasMaxLength(30);
        }
    }

Как мне создать расширение метод для PropertyBuilder типа string, который Entity Framework Core может понять? Чтобы я мог что-то сделать в этом духе ...

builder.Property(x => x.Email).MustContain('@', '.');

Метод Extension будет выглядеть примерно так, как показано ниже, это логика c внутри него, что я не уверен в том, как построить .

public static class PropertyBuilderExtensions
    {
        public static PropertyBuilder<string> MustContain(this PropertyBuilder<string> builder, params char[] chars)
        {
            // ???
        }
    }

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

Свободно задавать вопросы, если есть необходимость в каких-либо дальнейших объяснениях.

...