Как интегрировать базу данных в проект asp.net, используя Postgresql и Petapoco? - PullRequest
0 голосов
/ 23 октября 2018

Я не очень хорош в настройке проекта.Я работаю над приложением в VS, которое использует ASP.NET с MVC Framework.Я хочу использовать базу данных Postgresql и использовать ее в своем проекте с Petapoco.Я попробовал все, и я добавил строку подключения, но я не могу заставить это работать ..

1 Ответ

0 голосов
/ 29 октября 2018

Это делается с помощью Petapocoo 5.1.228

Если вы добавили его с помощью nuget, у вас есть раздел в Project-> Models-> Generated.в этом разделе у вас будут файлы .tt и .ttinclude

Один из них называется Database.tt, после запуска будут созданы объекты с базовым декорированием или тем, что вы настроили.В этом у вас есть в верхней части раздел «Настройки с параметром ConnectionStringName».У этого есть комментарий, который говорит "// Uses last connection string in config if not specified".Это означает, что если вы не настроите ConnectionStringName в файле web.config, он будет иметь значение lase.Поэтому, чтобы настроить его,

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.Включите это, как добавить и проверить DataProvider в GAC.И если у вас установлен правильный набор драйверов.

Еще одно слово о Database.tt: есть настройки, которые вы можете использовать для настройки сгенерированных POCO в каких пространствах имен, хочу ли я заполнить полную базу данных или исключить что ... проверить это!: P

Вернувшись в бизнес, как только вы настроили database.tt, щелкните правой кнопкой мыши и запустите пользовательский инструмент.В случае успеха у вас будет Database.cs по тому же пути, что и database.tt.в случае ошибки у вас будет тот же результат с исключением для поиска.

Сгенерированный файл будет содержать все POCO и пространства имен, необходимые для начала использования Petapoco ....

в моем случае,

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

Надеюсь, это поможет решить вашу проблему.

...