linq to PostgreSQL 的 NullReferenceError
NullReferenceError with linq to PostgreSQL
我有使用 linq 到 postgresql 的项目,我有库及其三个依赖项。
但是当我尝试连接到 de DB 时出现此错误:
linq2db.dll
中“System.NullReferenceException
”类型异常的第一次机会。附加信息:Object reference not set to an instance of an object. (Translated).
堆栈跟踪:
in LinqToDB.Data.DataConnection..ctor(String configurationString) in
i:\linq2db\Source\Data\DataConnection.cs:line 41 in
LinqToDB.Data.DataConnection..ctor() in
i:\linq2db\Source\Data\DataConnection.cs:line 24 in
modelo.BDGestion.bdgestionDB..ctor() in d:\Proyectos\Proyectos
VisualStudio\TimeSheets\TimeSheets\modelo\BDGestion.PostgreSQL.generated.cs:línea
44 en TimeSheets.SeleccionPersonal..ctor() in
d:\Proyectos\Proyectos
VisualStudio\TimeSheets\TimeSheets\SeleccionPersonal.cs:line 23
public partial class SeleccionPersonal : Form
{
public SeleccionPersonal()
{
InitializeComponent();
try
{
using (var db = new bdgestionDB())
{
}
}catch(Exception ex){
MessageBox.Show(ex.ToString());
}
}
}
我使用模板生成了 classes,连接字符串格式正确并正确添加到 de connectionStrings。我在这个解决方案中检查过它,并在其他计算机上由一个朋友自己检查过。如果您需要任何信息,请直接询问。
生成class:
public partial class bdgestionDB : LinqToDB.Data.DataConnection
{
tables...
public bdgestionDB()
{
InitDataContext();
}
public bdgestionDB(string configuration)
: base(configuration)
{
InitDataContext();
}
partial void InitDataContext();
}
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="Postgres" connectionString="Server=thot-test;Port=5432;Database=bdgestion;UserId=test;Password=T15Pmc;Pooling=true;MinPoolSize=10;MaxPoolSize=100;Protocol=3;"/>
</connectionStrings>
</configuration>
我用谷歌搜索了源代码并被指向 this file 的方向。
查看第 41 行,它尝试从 DataProvider 访问 MappingSchema。
由此看来,DataProvider 似乎为空。谷歌搜索更多,我发现 this page。看起来您的连接字符串中缺少提供商名称:
<add name="Northwind"
connectionString = "Server=.\;Database=Northwind;Trusted_Connection=True;Enlist=False;"
providerName = "PostgreSQL" />
Here 你可以找到一个使用 Linq2db 的例子,连接到 PostgreSQL 数据库。
我有使用 linq 到 postgresql 的项目,我有库及其三个依赖项。
但是当我尝试连接到 de DB 时出现此错误:
linq2db.dll
中“System.NullReferenceException
”类型异常的第一次机会。附加信息:Object reference not set to an instance of an object. (Translated).
堆栈跟踪:
in LinqToDB.Data.DataConnection..ctor(String configurationString) in i:\linq2db\Source\Data\DataConnection.cs:line 41 in LinqToDB.Data.DataConnection..ctor() in i:\linq2db\Source\Data\DataConnection.cs:line 24 in modelo.BDGestion.bdgestionDB..ctor() in d:\Proyectos\Proyectos VisualStudio\TimeSheets\TimeSheets\modelo\BDGestion.PostgreSQL.generated.cs:línea 44 en TimeSheets.SeleccionPersonal..ctor() in d:\Proyectos\Proyectos VisualStudio\TimeSheets\TimeSheets\SeleccionPersonal.cs:line 23
public partial class SeleccionPersonal : Form
{
public SeleccionPersonal()
{
InitializeComponent();
try
{
using (var db = new bdgestionDB())
{
}
}catch(Exception ex){
MessageBox.Show(ex.ToString());
}
}
}
我使用模板生成了 classes,连接字符串格式正确并正确添加到 de connectionStrings。我在这个解决方案中检查过它,并在其他计算机上由一个朋友自己检查过。如果您需要任何信息,请直接询问。
生成class:
public partial class bdgestionDB : LinqToDB.Data.DataConnection
{
tables...
public bdgestionDB()
{
InitDataContext();
}
public bdgestionDB(string configuration)
: base(configuration)
{
InitDataContext();
}
partial void InitDataContext();
}
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="Postgres" connectionString="Server=thot-test;Port=5432;Database=bdgestion;UserId=test;Password=T15Pmc;Pooling=true;MinPoolSize=10;MaxPoolSize=100;Protocol=3;"/>
</connectionStrings>
</configuration>
我用谷歌搜索了源代码并被指向 this file 的方向。
查看第 41 行,它尝试从 DataProvider 访问 MappingSchema。 由此看来,DataProvider 似乎为空。谷歌搜索更多,我发现 this page。看起来您的连接字符串中缺少提供商名称:
<add name="Northwind"
connectionString = "Server=.\;Database=Northwind;Trusted_Connection=True;Enlist=False;"
providerName = "PostgreSQL" />
Here 你可以找到一个使用 Linq2db 的例子,连接到 PostgreSQL 数据库。