PostgreSQL字段名和表名大小写的问题

创建表的时候,表名和字段名必须全小写,然后查询的时候不管全大写或全小写,或是Camel模式都不会报错。只要名称中有大写字母,或者全大写,查询时就必须保证大小写正确并用双引号包起来,否则就会报“XXX不存在”的错误:“... does not exist”

视图、存储过程、索引、外键、触发器之类的命名未测试,不过感觉应该适用于所有对象。

PS. 这样处理之后,在EntityFramework中的Codefirst代码里Camel写法的属性名在查询的时候又会报“不存在”的错误,需要手动通过[Column("小写名称")]来解决。

PS. 如果嫌手动设置[Column("小写名称")]太麻烦,也可以像下面这样处理一下modelBuilder的Configure:

 1 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 2 {
 3     Database.SetInitializer<TestDB>(null);
 4     modelBuilder.HasDefaultSchema("public");
 5 
 6     // 处理表名小写
 7     modelBuilder.Types().Configure(c => c.ToTable(c.ClrType.Name.ToLower()));
 8     // 处理字段名小写
 9     modelBuilder.Properties().Configure(c => c.HasColumnName(c.ClrPropertyInfo.Name.ToLower()));
10 }

 

posted @ 2017-09-26 18:12  润之  阅读(5816)  评论(0编辑  收藏  举报