이것은 가설 적이거나 "이것이 가능합니까?" 질문.
ASP.Net Core 2.2 MVC에서 Entity Framework를 사용하고 있습니다. 대문자로 데이터베이스에서 나오는 모든 문자열을 만들 수있는 방법이 있습니까? 대문자로 저장하고 싶지 않으며 검색 할 때 대문자가되기를 원합니다.
모델 속성에 "게터 (getter)"를 작성하는 것과는 대조적으로, 코드에서 단지 1 자리가 되는 것이 바람직하다.
" 현재 특정 유형의 모든 속성이 동일한 값 변환기를 사용해야하는 한 곳에서 지정할 방법이 없습니다.이 기능은 향후 릴리스에서 고려 될 것입니다. "-Microsoft, Entity framework 핵심 문서.
같은 문서를 읽으십시오. OnModelCreating에서 개별 필드에 변환을 적용합니다.
이 문제를 해결하려면 모델 및 속성을 반복하여 HasConversion
을 구성 할 수 있습니다.
다음과 같은 코드를 사용해보십시오.
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
var converter = new ValueConverter<string, string>(
v => v,
v => v.ToUpper());
foreach (var entityType in builder.Model.GetEntityTypes())
{
foreach (var property in entityType.GetProperties())
{
if (property.ClrType == typeof(string))
{
builder.Entity(entityType.Name)
.Property(property.Name)
.HasConversion(converter);
}
}
}
}
}