Case insensitive name of tables and properties in Entity Framework 7

前端 未结 6 1890
萌比男神i
萌比男神i 2021-01-03 00:26

I use Entity Framework 7 with Npgsql adapter. Sql generated by EF seems like

SELECT \"r\".\"Id\", \"r\".\"Name\" FROM \"public\".\"Role\" AS \"r\"

6条回答
  •  长情又很酷
    2021-01-03 01:21

    1. Override DelimitIdentifier in NpgsqlSqlGenerationHelper like this:

      public class SqlGenerationHelper : NpgsqlSqlGenerationHelper
      {
          public override string DelimitIdentifier(string identifier) => identifier.Contains(".") ? base.DelimitIdentifier(identifier) : identifier;
      }
      
    2. Replace ISqlGenerationHelper with your class using ReplaceService method:

      public class MyContext : DbContext
      {
          public virtual DbSet MyTable { get; set; }
      
          public MyContext(DbConnection connection) :
                 base(new DbContextOptionsBuilder().UseNpgsql(connection)
                                                   .ReplaceService()
                                                   .Options) 
          { }
      }
      

提交回复
热议问题