如何在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
相关产品推荐
相关产品推荐

