創建表的時候,表名和字段名必須全小寫,然后查詢的時候不管全大寫或全小寫,或是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 }