linq2db 异常:“未提供配置字符串”。我没有 web/app.config,但即使我明确给出字符串,同样的异常
Posted
技术标签:
【中文标题】linq2db 异常:“未提供配置字符串”。我没有 web/app.config,但即使我明确给出字符串,同样的异常【英文标题】:linq2db exception: "Configuration string is not provided". I don't have a web/app.config, but even if I give the string explicitly, same exception 【发布时间】:2021-12-25 11:27:34 【问题描述】:我正在开展一个培训项目,为 Northwind 开发一个带有实体框架的 DAL,并在同一个项目中开发另一个带有 linq2db 的 DAL。
我在运行使用 linq2db 的测试时不断收到错误消息:
LinqToDB.LinqToDBException : 未提供配置字符串。
我猜是因为我没有按照模板“CopyMe.SqlServer.tt.txt”的第 3 步操作,该模板说要将其添加到 web/app.config.file:
<connectionStrings>
<add name="Northwind" providerName="System.Data.SqlClient"
connectionString="Data Source=(local);Initial Catalog=Northwind;Integrated Security=true" />
</connectionStrings>
因为我的项目中没有这样的文件。
当我尝试像这样传递配置时,它也不起作用,同样的异常:
using var db = new NorthwindDB(Resources.ConnectionString);
var q = db.Customers.Select(c => c);
foreach (var c in q)
Console.WriteLine(c.ContactName);
我该怎么办?我错过了什么?
upd:很抱歉提供错误信息。当我显式传递配置时,异常是:
Configuration '数据源=(local);初始 Catalog=Northwind;Integrated Security=true' 未定义。
【问题讨论】:
您的项目中是否有app.config
文件?除了 .config 文件中的connectionStrings
,还有several options to provide connection information。
@AlwaysLearning 谢谢!使用连接字符串设置提供程序有效
【参考方案1】:
感谢@AlwaysLearning。
linq2db github 中的这种方法是我的解决方案: https://github.com/linq2db/linq2db#using-connection-string-settings-provider
public class ConnectionStringSettings : IConnectionStringSettings
public string ConnectionString get; set;
public string Name get; set;
public string ProviderName get; set;
public bool IsGlobal => false;
public class MySettings : ILinqToDBSettings
public IEnumerable<IDataProviderSettings> DataProviders
=> Enumerable.Empty<IDataProviderSettings>();
public string DefaultConfiguration => "SqlServer";
public string DefaultDataProvider => "SqlServer";
public IEnumerable<IConnectionStringSettings> ConnectionStrings
get
yield return
new ConnectionStringSettings
Name = "Northwind",
ProviderName = ProviderName.SqlServer,
ConnectionString =
@"Server=.\;Database=Northwind;Trusted_Connection=True;Enlist=False;"
;
然后把它放在应用开始的地方:
DataConnection.DefaultSettings = new MySettings();
【讨论】:
以上是关于linq2db 异常:“未提供配置字符串”。我没有 web/app.config,但即使我明确给出字符串,同样的异常的主要内容,如果未能解决你的问题,请参考以下文章