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 数据库。