Работая над одним из моих собственных проектов свободного времени, используя 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)
{
// ???
}
}
Это позволило бы проверить, что, например, электронная почта содержит требуемые @ и. символы, которые всегда находятся в пределах допустимого адреса электронной почты, при попытке сохранить его в базе данных. Эту проверку также можно выполнить вручную при создании пользователя, но я все равно чувствую, что было бы неплохо, если бы база данных просто отказала в сохранении, если бы она не содержала указанные символы.
Свободно задавать вопросы, если есть необходимость в каких-либо дальнейших объяснениях.