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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM