-
Notifications
You must be signed in to change notification settings - Fork 859
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Firebird 数据库同步表结构 bug #1913
Comments
这些代码在之前的版本问题,能否跟进了解 5.0 和之前版本的差异,谢谢。 期待反馈! |
之前并未在项目中应用过 Firebird,这次是在测试 quickadmin.net 对 Firebird 的支持时发现的此问题,出现问题的实体的定义如下: [Table(Name = "fx_fxdy")]
[Display(Name = "风险单元")]
public class Fxdy : FullAuditEntityWithUUIDKey, IDeptRelatedEntityWithDeptPath, IEntityWithName, ICRUDEntity<string>
{
[Column(StringLength = 36)]
[Display(Name = "风险对象Id")]
public string FxdxId { get; set; }
[Column(IsNullable = false, StringLength = 100)]
[Display(Name = "单元名称")]
[Required]
public string Name { get; set; }
...
} FreeSql.Provider.Firebird 在第一次建表时生成的各个注释语句(对各个字段以及表)是 OK 的,看看: 从版本 2.5 到 5.0,Firebird 文档: 之前没人用到过 Firebird 数据库 CodeFirst 给表加注释(备注)? |
firebird 测试算比较多的,可嵌入式,或并发写入,性能稳定。 可能使用 firebird + codefirst 对比结构的人少吧。 我看了 git history log,可能一开始就写错了,欢迎提 PR,谢谢 |
fork -> clone -> commit -> PR 欢迎贡献源码 |
开源项目,非常需要像你这样,愿意深入研究的伙伴。 |
网络原因上github比较费劲 |
程序员必备梯子。 |
问题描述及重现代码:
Firebird 数据库(5.0),UseAutoSyncStructure(true) 后,发现每次 CRUD 表时同步结构操作始终要执行,且执行失败,调试发现是在反复更新表注释,且用的 SQL 语句是错的:
翻看源码,应该是
FirebirdCodeFirst.GetComparisonDDLStatements()
方法有两处问题,见附图:第一处标记,应该取
rdb$description
而不是rdb$external_description
第二处标记,应该用 SQL:
COMMENT ON TABLE "xxx" IS 'xxx'
数据库版本
Firebird 5.0
安装的Nuget包
FreeSql.Provider.Firebird 3.2.830
.net framework/. net core? 及具体版本
.net 8.0
The text was updated successfully, but these errors were encountered: