Asp.net core 使实体框架数据库中的所有字符串都大写

Asp.net core 使实体框架数据库中的所有字符串都大写,asp.net-core,.net-core,entity-framework-core,Asp.net Core,.net Core,Entity Framework Core,这是一个假设或“这可能吗?”的问题 我正在ASP.NETCore2.2MVC中使用实体框架。是否有一种方法可以将来自数据库的所有字符串转换为大写?我不想将它们存储为大写,我只希望在检索它们时它们是大写的 最好,我希望它在我的代码中只占一个位置,而不是在模型属性上写一堆“getter”。“”-Microsoft,Entity framework核心文档 读同一份文件。用于将转换应用于单个字段(在OnModelCreating中)。对于解决方法,您可以尝试通过循环模型和属性来配置hascoverat

这是一个假设或“这可能吗?”的问题

我正在ASP.NETCore2.2MVC中使用实体框架。是否有一种方法可以将来自数据库的所有字符串转换为大写?我不想将它们存储为大写,我只希望在检索它们时它们是大写的

最好,我希望它在我的代码中只占一个位置,而不是在模型属性上写一堆“getter”。

“”-Microsoft,Entity framework核心文档


读同一份文件。用于将转换应用于单个字段(在OnModelCreating中)。

对于解决方法,您可以尝试通过循环模型和属性来配置
hascoveration

尝试以下代码:

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);
                }
            }
        }
    }
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序DBContext(DbContextOptions选项)
:基本(选项)
{
}
公共数据库集产品{get;set;}
公共DbSet标记{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder)
{
基于模型创建(生成器);
var转换器=新值转换器(
v=>v,
v=>v.ToUpper());
foreach(builder.Model.GetEntityTypes()中的var entityType)
{
foreach(entityType.GetProperties()中的var属性)
{
if(property.ClrType==typeof(string))
{
builder.Entity(entityType.Name)
.Property(Property.Name)
.转换(转换器);
}
}
}
}
}