dotnetcore / dotnetcore/FreeSql
开启UseAutoSyncStructure 表结构自动同步的问题
- Dominant language
- C#
- Stars
- 4.4k
- Forks
- 910
- PR merge metrics
- No merged PRs in 30d
Description
#### 配置连接字符串的时候指定 searchpath=dbo;
我的实体是 [Table(Name = "**nursing_daily_detail**")],没有 schema 前缀。所以:
运行时 CRUD:FreeSql 生成的 SQL 是 ... FROM nursing_daily_detail(裸表名)。PostgreSQL 收到后,按 search_path=dbo 去解析 → 命中 **dbo.nursing_daily_detail**
UseAutoSyncStructure 在读表结构时,自己拼了一段元数据查询里面显式写死了 schema 条件:
**where ns.nspname = 'public' and c.relname = 'nursing_daily_detail'**
FreeSql 用写死的 nspname='public' 去读结构 → 读到 public.nursing_daily_detail导致了alter table的时候报错跟c#实体里面类型不一致
### 总结来说就是:
连接字符串里的search_path 决定"数据库执行时怎么找表";FreeSql 的结构同步用的是"自己写死 public 的元数据查询",两者不是一回事。所以**裸表名运行时走 dbo**,**同步时却去读 public**。
不知道 算不算BUG 感觉很奇怪-.-
#### postgresql
#### FreeSql postgresql 3.5.213
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.