Tag: npgsql

Postgresql – 动态创建数据库和表

此代码无效。 任何人都可以指导我在哪里可以找到使用C#动态创建Postgresql数据库和表的示例? const string connStr = “Server=localhost;Port=5432; User Id=postgres;Password=enter;Database=postgres”; var m_conn = new NpgsqlConnection(connStr); // creating a database in Postgresql m_createdb_cmd = new NpgsqlCommand(“CREATE DATABASE IF NOT EXISTS \”testDb\” ” + “WITH OWNER = \”postgres\” ” + “ENCODING = ‘UTF8’ ” + “CONNECTION LIMIT = -1;”, m_conn); // creating a table in Postgresql m_createtbl_cmd = […]

为Postgresql安装Npgsql.dll

所以我在安装npgsql.dll和mono.security.dll时遇到问题。 我一直在努力解决这个问题……请帮忙。 以下是我所做的步骤…… 从https://github.com/npgsql/npgsql下载zip文件 进入Visual Studio并开始新项目。 C#命令(不确定我应该创建哪个特定项目) 创建一个强大的密钥名称 然后我尝试使用gacutil安装.dll文件 在我在步骤1中下载的zip文件中,我无法在任何地方找到Npgsql.dll和Mono.Security.dll … 我也尝试下载实际上有这些文件的其他zip文件,但是,当我尝试在命令中安装它们时(gacutil / i C:… \ Npgsql.dll)我只是不断收到以下错误: “将程序集添加到缓存失败:???????????”

entity framework6.1.1和Npgsql 2.2.3:找不到兼容的entity framework数据库提供程序

我正在使用Visual Studio 2012 Update 4中的EntityFramework 6.1.1和npgsql 2.2.3开发项目。为此,我使用提供的安装程序安装了npgsl并安装了nuget软件包“Npgsql”和“Npgsql for Entity Framework”(和“EntityFramework”本身,当然)。 过去一切都很好:我可以成功访问我的数据库一段时间 – 直到有一天所有东西都“爆炸”。 这是事件历史: 在主要代码升级后修复编译器错误我遇到了以下错误消息: “无法加载npgsl.EntityFrameworkLegacy assmbly”(我既没有安装也没有引用这个程序集) 一大堆“元数据文件’xxx’找不到”错误,其中’xxx’指向我自己的项目程序集 我找到了可能的解决方案“元数据文件”问题 – 比如删除.suo文件,检查项目构建顺序等等。 他们都没有解决问题。 所以我从我的项目中删除了.edmx文件(以及所有自动生成的数据库访问文件)。 这修复了“元数据文件”的问题 – 当然引入了“未解析的符号”。 我试图在我的项目中添加一个新的“ADO.NET实体数据模型”以重新获得数据库访问权限。 只有连接列表中没有列出的所有PostgreSQL数据库连接。 此外,我无法创建新的PostgreSQL连接,因为未列出此数据源。 虽然这不影响Visual Studio中的全局“数据连接”对话框:在这里我仍然可以访问我的PostgreSQL连接。 我使用安装程序重新安装了npgsql。 现在我可以创建一个新的“ADO.NET实体数据模型”并连接到我的PostgreSQL数据库。 但是这次我收到错误消息:“ 您的项目引用了最新版本的Entity Framework;但是,找不到与此版本兼容的Entity Framework数据库提供程序 ”[…]。 这就是我现在被困住的地方。 我目前的设置是: 该项目涉及以下程序集: .NET 4.5的EntityFramework 6.1.1 EntityFramework.SqlServer 6.1.1 for .NET 4.5 适用于.NET 4.5的Npgsql 2.2.3 适用于.NET 4.5的Npgsql.EntityFramework 2.2.3 […]

PostgreSQL错误:EXECUTE的查询字符串参数为null

我有一个名为带有触发器的证据表,它调用一个存储过程,它基本上按月进行表分区。 但是,当我开始在加载下插入大​​量行时,我得到一个模糊的错误: Npgsql.NpgsqlException: query string argument of EXECUTE is null Severity: ERROR Code: 22004 at Npgsql.NpgsqlState.d__a.MoveNext() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlState.cs:line890 at Npgsql.ForwardsOnlyDataReader.GetNextResponseObject() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlDataReader.cs:line 1175 at Npgsql.ForwardsOnlyDataReader.GetNextRowDescription() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlDataReader.cs:line 1191 at Npgsql.ForwardsOnlyDataReader.NextResult() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlDataReader.cs:line 1377 at Npgsql.NpgsqlCommand.ExecuteNonQuery() in c:\C#Apps\github.npgsql.Npgsql.stock\src\Npgsql\NpgsqlCommand.cs:line523 我的系统具有自动重试function,并且最终每条记录都插入到数据库中,但是在负载很高的许多exception之后。 数据库是CentOS 6服务器上的PostgreSQL 9.3,客户端是使用Npgsql驱动程序的C#.NET。 表: CREATE TABLE evidence ( id uuid NOT NULL, notification_id uuid NOT NULL, feedback […]

Npgsql参数化查询输出与PostGIS不兼容

我在Npgsqlcommand中有这个参数化查询: UPDATE raw.geocoding SET the_geom = ST_Transform(ST_GeomFromText(‘POINT(:longitude :latitude)’, 4326),3081) WHERE id=:id :longutide和:latitude是double , id是int 。 实际上针对数据库运行的查询如下所示: UPDATE raw.geocoding SET the_geom = ST_Transform(ST_GeomFromText(‘POINT(((E’-96.6864379495382′)::float8) ((E’32.792527154088′)::float8))’, 4326),3081) WHERE id=((10793455)::int4) 感谢Erwin Brandstetter的帮助,显然需要简化查询才能使用PostGIS。 他建议: UPDATE raw.geocoding SET the_geom = ST_Transform(ST_GeomFromText( $$POINT(:longitude :latitude)$$::geometry, 4326), 3081) WHERE id = :id 我想我可以使用动态查询来创建它,我每次运行时都会手动更新查询,但有没有办法使用Npgsql参数化查询来完成这项工作?

将C#连接到PgBouncer

我正在使用C#和PostgreSQL。 我使用Npgsql连接到PostgreSQL。 Everthing工作正常。 现在我想在PgBouncer工具的帮助下使用连接池。数据库信息已设置为PgBouncer。 因为现在PgBouncer会处理与PostgreSQL数据库的连接(如果我错了,请纠正我)。 但问题是,我无法找到在C#中连接PgBouncer的方法。如果有人也这样做,请告诉我。 在PostgreSQL中使用连接池而不是PgBouncer也是好的吗? 如果是,那么请告诉我该怎么做。 谢谢

如何修改更新命令的设置值npgsql postgresql c#

我一直在尝试在c#上修改postgresql的sql命令。 注释引号中的行是有效的,但我需要将集合从预定义更改为变量。 虽然使用相同的方式将其定义为变量,并且用户在另一个表单上给出了文本,但它似乎不起作用。 用变量替换“first_name”的正确方法是什么? String oldname = Actor.oldname; String newname = Actor.newname; String column = Actor.columnname; try { string connstring = “Server=127.0.0.1; Port=5432; User Id=postgres; Password=72677267; Database=imdb;”; NpgsqlConnection connection = new NpgsqlConnection(connstring); connection.Open(); //NpgsqlCommand command = new NpgsqlCommand(“UPDATE actor SET first_name = ” + newname + ” WHERE first_name =” + oldname + “”, connection); […]

SemaphoreSlim保护连接池免于耗尽

我在事件驱动架构中有一个微服务(Web API),它接收来自RabbitMQ的消息,它应该使用ADO.NET将它们保存到PostgreSQL数据库中。 不幸的是,我的连接池(目前设置为50)很快耗尽,给我这个错误信息: The connection pool has been exhausted, either raise MaxPoolSize 我的RabbitMQ Consumer设置如下(Singleton): public class Listener : RabbitMqConnection { public AsyncEventingBasicConsumer _asyncConsumer; private static readonly SemaphoreSlim AsyncLock = new SemaphoreSlim(1, 1); public Listener() { _asyncConsumer = new AsyncEventingBasicConsumer(_channel); _asyncConsumer.Received += ConsumerReceived; } public async Task ConsumerReceived(object sender, BasicDeliverEventArgs message) { await AsyncLock.WaitAsync(); try { […]

Npgsql连接池在MinPoolSize连接处停止

第一次使用Npgsql,虽然我已经完成了其他PostgreSQL编程。 Npgsql 3.1.6,PostgreSQL 9.5。 Visual Studio 2015与.Net 4.5.1。 我有一个看起来像这样的连接字符串(每次使用相同的字符串,未经修改,每次数据库连接尝试): Server = dbserver; SearchPath = network; Database = netinfo; User ID = netuser; Password = netpassword; Port = 19491; CommandTimeout = 300; Pooling = true; MaxPoolSize = 75 这是我们网络的C#multithreading数据收集器。 收集器上最多运行32个线程。 每个线程在需要时打开一个连接,但一次只使用一个连接。 如有必要,线程将关闭并重新打开连接。 我写了自己的各种连接池,它正在工作; 在开始时打开一堆连接,从ConcurrentQueue拉出一个打开的连接,使用它,然后将它返回到队列。 队列中有16个开放连接。 如果做得不对,那就充满了危险但是有效。 在代码审查期间,同事将我转向Npgsql连接池,因此我正在尝试使用它。 当我到达UPDATE命令(dbCommand.ExecuteNonQuery());时,我收到System.InvalidOperationException , “The connection is not open” (dbCommand.ExecuteNonQuery()); 我不相信命令本身是重要的 […]

如果MSB3277出现在asp net core app中该怎么办

我正在使用引用EntityFrameworkCore 2.1.3包的Database-Project,但AspNetCore.App-metapackage包含EntityFrameworkCore 2.1.2。 引入我的数据库项目后,我得到这个msbuild警告: Warning MSB3277 Found conflicts between different versions of “Microsoft.EntityFrameworkCore” that could not be resolved. 我搜索了一下,我找到了这个文档: https ://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.1 我使用的第三方库(NpgSql for Postgre)依赖于2.1.3 …我应该降级所有软件包,以便他们使用efcore 2.1.2软件包还是应该忽略这个警告? 或者更好的问题:哪种方式不那么痛苦? 提前致谢