【问题标题】:Tables with schema using SqliteDialect.Provider具有使用 SqliteDialect.Provider 的架构的表
【发布时间】:2017-06-05 08:14:59
【问题描述】:

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

【问题讨论】:

    标签: sqlite servicestack ormlite-servicestack


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多