gpt4 book ai didi

sqlite - 使用 SqliteDialect.Provider 的具有架构的表

转载 作者:行者123 更新时间:2023-12-03 06:27:17 25 4
gpt4 key购买 nike

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

最佳答案

SQLite 没有架构,因此通过在表名称之前添加架构名称来模拟它们。然而,这应该是 SQLite :memory: DB 的透明实现细节,因为在创建或查询表时将使用相同的表名称。

如果您要创建自定义 SQL,则应使用从以下位置返回的 tableName:

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

关于sqlite - 使用 SqliteDialect.Provider 的具有架构的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44364549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com