You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linq2db中正确定义并访问Oracle的数据库链接表?

Oracle dblink表在Linq2db中的正确映射方法

错误原因

你之前的写法将dblink标识@STATS直接写入表名参数,Linq2db生成SQL时会将SECTORS@STATS整体作为表名处理,部分场景下还会自动添加转义引号,最终生成的SQL不符合Oracle dblink的语法规则,因此触发ORA-00942: table or view does not exist报错。

正确映射方式

Linq2db的TableAttribute提供了单独的Server属性用于配置跨库链接标识,你只需要将dblink名称STATS填入该属性即可:

[Table(Server = "STATS", Schema = "MySchema", Name = "SECTORS")]
public partial class Sector
{
    // 列映射示例,Oracle大小写敏感场景请保持列名与库内一致
    [Column("ID")]
    public int Id { get; set; }
    [Column("NAME")]
    public string Name { get; set; }
}

配置完成后Linq2db会自动生成符合Oracle语法的MySchema.SECTORS@STATS表标识。

可选:Fluent Mapping写法

如果你使用流式配置而非特性映射,可按如下方式配置:

builder.Entity<Sector>()
    .HasServer("STATS")
    .HasSchema("MySchema")
    .HasTableName("SECTORS");

注意事项

如果你的dblink名称包含特殊字符、或需要严格区分大小写,可给Server参数的值添加转义引号:Server = "\"Your_Dblink_Name\""。


内容的提问来源于stack exchange,提问作者Robin Bennett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:15:01