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

时间:2018-10-22 21:27:22

标签: c# asp.net postgresql visual-studio petapoco

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

1 个答案:

答案 0 :(得分:1)

这是通过Petapocoo 5.1.228完成的

如果您将其与nuget添加在一起,则在Project-> Models-> Generated中会有一个部分。 在本节中,您将拥有.tt和.ttinclude文件

一个名为Database.tt的文件,运行后将创建具有所需基本装饰或设置内容的对象。在这一部分中,您靠近顶部的位置是带有ConnectionStringName参数的“设置”部分。这个人有一条评论说“ // Uses last connection string in config if not specified”。这意味着,如果您未在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" />

然后,如果您在使用DataProviders时遇到任何问题...请阅读PetaPoco.Core.tt中的文档,其中包括如何在GAC中添加和检查DataProvider。并且,如果您安装了正确的驱动程序集。

关于Database.tt的另一种说法是,可以使用一些设置来调整生成的POCO的名称空间,我想要完整的数据库还是排除哪些内容……检查出来! :P

重新开展业务,右键单击“ database.tt”,右键单击,然后运行“运行自定义”工具即可完成工作。成功后,您将在与database.tt相同的路径下拥有一个Database.cs。如果出错,您将得到相同的结果,但需要查找的异常除外。

生成的文件将包含开始使用Petapoco所需的所有POCO和名称空间。...

就我而言

using NorthwindConnection;

另外

public IEnumerable<Customer> GetCustomers()
{
    var db = new PetaPoco.Database("NorthwindConnection");
    return db.Query<Customer>("SELECT * FROM Customers");
} 

允许我检索所有客户。

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

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

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