C# 如何使用Postgresql和Petapoco将数据库集成到asp.net项目中?

C# 如何使用Postgresql和Petapoco将数据库集成到asp.net项目中?,c#,asp.net,postgresql,visual-studio,petapoco,C#,Asp.net,Postgresql,Visual Studio,Petapoco,我一点也不擅长建立一个项目。我正在VS中开发一个使用ASP.NET和MVC框架的应用程序。我想使用Postgresql数据库,并在我与Petapoco的项目中使用它。我已经尝试了所有方法,并添加了一个连接字符串,但我无法使其工作。这是通过Petapocoo 5.1.228完成的 如果使用nuget添加它,则在Project->Models->Generated中有一个部分。 在本节中,您将有.tt和.ttinclude文件 其中一个名为Database.tt,一旦运行,将创建具有所需基本装饰的对

我一点也不擅长建立一个项目。我正在VS中开发一个使用ASP.NET和MVC框架的应用程序。我想使用Postgresql数据库,并在我与Petapoco的项目中使用它。我已经尝试了所有方法,并添加了一个连接字符串,但我无法使其工作。

这是通过Petapocoo 5.1.228完成的

如果使用nuget添加它,则在Project->Models->Generated中有一个部分。 在本节中,您将有.tt和.ttinclude文件

其中一个名为Database.tt,一旦运行,将创建具有所需基本装饰的对象,或者您已设置的对象。在本例中,在顶部附近有一个名为Settings with ConnectionStringName parameter的部分。这一个有一条注释,说明//如果未指定,将使用配置中的最后一个连接字符串。这意味着,如果您不在web.config文件中设置ConnectionStringName,它将使用最新版本。所以要配置它

ConnectionStringName = "NorthwindConnection";  //this is my example using Northwind
然后在web.config中:

<add name="NorthwindConnection" connectionString="data source=.;Initial 
Catalog=Northwind;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
加上

public IEnumerable<Customer> GetCustomers()
{
    var db = new PetaPoco.Database("NorthwindConnection");
    return db.Query<Customer>("SELECT * FROM Customers");
} 
允许我检索所有客户

编辑:数据提供程序或驱动程序连接故障:检查PetaPoco.Core.t包括:

In order to work, the appropriate driver must be registered in the system machine.config file.  If you're
 using Visual Studio 2010 the file you want is here:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

 After making changes to machine.config you will also need to restart Visual Studio.

 Here's a typical set of entries that might help if you're stuck:

    <system.data>
        <DbProviderFactories>
            <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
            <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
            <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.11.91, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
        </DbProviderFactories>
    </system.data>

 Also, the providers and their dependencies need to be installed to GAC.  

 Eg; this is how I installed the drivers for PostgreSQL

     gacutil /i Npgsql.dll
     gacutil /i Mono.Security.dll

希望这有助于解决您的问题。

如果没有可复制的代码和/或有问题的代码段,即您的连接字符串和您如何使用该值,则没有人能够帮助您。这是我的应用程序配置文件的一部分当我运行Petapoco脚本时,它说加载提供程序Npgsql失败-找不到请求的.Net Framework数据提供程序。它可能没有安装。但是它已经安装好了。老实说,我自己从来没有在我工作的地方设置过项目,他们总是为我设置项目,所以我想达到我理解这一点的程度。我们使用SQL Server,所以我尝试使用Postgresql,因为它是免费的。我已经习惯了Petapoco,所以我想使用这个oo。什么版本的模型视图控制器?你到底不明白什么?我很乐意提供帮助,或提供一个样本项目,但我们需要更完整的答案。我的连接字符串是正确的,我只是仍然有麻烦。。。每当我在Database.tt上运行自定义工具时,它仍然会给出一条错误消息,说明加载提供程序Npgsql失败-找不到请求的.Net Framework数据提供程序。它可能没有安装。它已安装…您是否已检查GAC缓存未更新?gacutil/i Npgsql.dll或签入系统机器.config文件?如果您使用的是Visual Studio 2010,则需要的文件如下:默认C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.Config。注意:如果对machine.config进行任何更改,还需要重新启动Visual Studio。
In order to work, the appropriate driver must be registered in the system machine.config file.  If you're
 using Visual Studio 2010 the file you want is here:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

 After making changes to machine.config you will also need to restart Visual Studio.

 Here's a typical set of entries that might help if you're stuck:

    <system.data>
        <DbProviderFactories>
            <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
            <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/><add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
            <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.11.91, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
        </DbProviderFactories>
    </system.data>

 Also, the providers and their dependencies need to be installed to GAC.  

 Eg; this is how I installed the drivers for PostgreSQL

     gacutil /i Npgsql.dll
     gacutil /i Mono.Security.dll