使用 SqliteDialect.Provider 架构的表

Tables with schema using SqliteDialect.Provider

在我的测试项目中,我使用“:memory”连接字符串和 SqliteDialect.Provider 作为提供者注册了一个连接。当尝试执行任意 sql 的 运行 测试时(我有一个复杂的连接语句,所以我不能使用类型化查询)我得到一个错误,指出 table 不存在。在我的查询中,我打印了 "SELECT * FROM xxx.Table1",但是当查看从键入的查询生成的代码时,我可以看到它是 "SELECT * FROM xxx_Table1"。我需要为生产代码使用模式,那么在我的域模型上使用属性 [Schema("xxx")] 时,有没有办法强制 ORMLite for Sqlite 生成模式而不仅仅是名称前缀?

SQLite 没有架构,因此通过在 table 名称前添加架构名称来模拟它们。然而,这应该是 SQLite :memory: 数据库的透明实现细节,因为在创建或查询 table.

时将使用相同的 table 名称

如果您要创建自定义 SQL,您应该使用 table返回的名称:

var modelDef = typeof(Table1).GetModelMetadata();
var tableName = db.GetDialectProvider().GetTableName(modelDef);
var sql = $"SELECT * FROM {tableName}";