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

linq2db抛出配置未提供异常,无config文件传连接字符串仍报错如何解决?

你出现的Configuration xxx is not defined报错,是因为你调用的NorthwindDB单参数构造函数默认接收的是配置项名称,而非原始连接字符串,linq2db会拿着你传入的完整连接字符串去配置文件里找同名的配置项,找不到就抛出该异常。

解决方案

方法1:直接使用多参数构造重载

调用NorthwindDB的双参数构造函数,同时传入数据库提供器名称和连接字符串即可,不需要依赖配置文件:

// 第二个参数根据你使用的SqlServer驱动类型调整,用System.Data.SqlClient就填对应名称,用Microsoft.Data.SqlClient就替换为对应值
using var db = new NorthwindDB(
    providerName: "System.Data.SqlClient",
    connectionString: Resources.ConnectionString);

var q = db.Customers.Select(c => c);
foreach (var c in q)
    Console.WriteLine(c.ContactName);

方法2:全局预注册连接配置

在程序启动的入口位置(测试项目的初始化方法、控制台项目的Main方法、Web项目的启动配置逻辑)全局注册linq2db的连接配置,后续构造NorthwindDB实例时不需要重复传参:

using LinqToDB;
using LinqToDB.Data;

// 全局仅需执行一次
DataConnection.DefaultSettings = new LinqToDB.Configuration.LinqToDBConnectionSettings()
    .AddConnection(
        configurationName: "Northwind",
        providerName: "System.Data.SqlClient",
        connectionString: Resources.ConnectionString);

配置完成后直接用无参构造即可:

using var db = new NorthwindDB();

方法3:添加配置文件适配TT模板原生逻辑

如果要完全匹配CopyMe.SqlServer.tt.txt模板的默认设计,直接给项目添加配置文件即可:

  • .NET Framework项目:在项目根目录添加App.config(类库/桌面项目)或Web.config(Web项目),填入你提到的connectionStrings节点,同时将文件属性中的「复制到输出目录」设置为「如果较新则复制」
  • .NET Core/.NET 5+项目:同样可以添加App.config适配TT模板的默认读取逻辑,无需额外修改生成的NorthwindDB代码

额外注意事项

EF和linq2db的配置读取逻辑完全独立,共用同一个连接字符串也不会出现冲突,不需要修改你已经写好的EF相关配置。


内容的提问来源于stack exchange,提问作者Pavel Antropov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:03