-
Notifications
You must be signed in to change notification settings - Fork 226
PostgreSQL
The PostgreSQL npgsql.dll file needs to be installed into the GAC.
Visit https://github.com/npgsql/npgsql/releases and download the latest MSI installer by looking into the assets of a release. The latest one with an MSI installer is currently v4.1.8
To install npgsql into the global assembly cache (GAC) I ran the following command:
cd C:\Users\[user]\.nuget\packages\npgsql\4.1.3.1\lib\net461
gacutil.exe /i Npgsql.dll
Notice I am using the .NET 4.6.1 version because the generator runs as a T4 template using .NET, and not a .NET Core template. It does not matter if you are generating code for .NET or .NET Core, the generator is run outside of your project as a .NET program.
Looking at which version I have installed with gacutil /l npgsql shows the following:
Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.0
Copyright (c) Microsoft Corporation. All rights reserved.
The Global Assembly Cache contains the following assemblies:
npgsql, Version=4.1.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL
Number of items = 1
Which means I have v4.1.3 installed.
In both
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.configc:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
at approximately line 168 I have the following system.data xml where you will see the Npgsql Data Provider has been added
<system.data>
<DbProviderFactories>
<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" description=".NET Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=4.1.3.0, Culture=neutral, PublicKeyToken=5D8B90D52F46FDA7"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>I modified both. However to find the exact one which is used by the generator, in your <database>.tt file very near the bottom, un-comment
fileManagement.WriteLine("// " + System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile);Save the <database>.tt and inspect the first line in generated output. I have the following listed:
// C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.configSo that is the exact file the generator will use, and is the one that is required to have the above npgsql XML added.
Further reading here.
- Home
- Compared with the Microsoft scaffolder
- Connection strings
- JetBrains Rider
- Upgrading from v3 to v4
- Saving .tt does nothing
- Settings A-Z - every setting, with a page each
- Common Settings Types Explained
- Settings Callbacks
- Settings runtime values and helpers
- Filtering
- Full Control Over the Generated Code
- Enum Generation from Table Data
- Owned Entities
- JSON column support
- Global Query Filters
- Extended Property Names Feature
- Partial Properties
- File-Scoped Namespaces
- Data Annotations
- Spatial Types
- HierarchyId
- RowVersion and TimeStamp columns
- Lazy Loading
- Stored proc result sets