标签: npgsql

从postgres获取消息

我正在使用C#可执行文件在postgres中启动一个真空过程.我希望将消息返回到我的可执行文件,但我无法从输出窗口返回消息.

简而言之,我正在寻找使用NPGSQL的postgres中的相同内容:

// Display messages this code is for SQL server to reteive data back from message tab

conn.InfoMessage += delegate(object sender, SqlInfoMessageEventArgs e) {
  stdmForm.txtLastSQLMessages.Text +`=` "\n" + e.Message;
};
Run Code Online (Sandbox Code Playgroud)

我希望使用NPGSQL在我的C#代码中获取此消息.

c# postgresql npgsql

6
推荐指数
1
解决办法
1311
查看次数

无法从远程位置通过 pgbouncer 连接到数据库

我正在开发与 postgresql (npgsql) 连接的 .net 应用程序。由于大量空闲连接(npgsql 无法终止它),我不得不安装 pgbouncer。我编写了一个配置文件并设置了一个 auth_user_file。

pgbouncer配置:

[databases]
dbr = host=HOST_DNS_NAME port=16252 dbname=app_database user=PGB_USER password=PGB_PASSWORD

[pgbouncer]
listen_port = 16252
listen_addr = *
auth_type = md5
auth_file = /URL_TO_AUTH_FILE/users.txt
logfile = pgbouncer.log
pidfile = pgbouncer.pid
admin_users = root
stats_users = root
default_pool_size = 50
max_client_conn = 100
log_connections = 1
log_disconnections = 1
log_pooler_errrors = 1
unix_socket_dir = /tmp
Run Code Online (Sandbox Code Playgroud)

我允许在 16252 端口上进行通信 (iptables)

-A INPUT -m state --state NEW,ESTABLISHED -m tcp  -p tcp --dport 16252 -j ACCEPT

netstat …
Run Code Online (Sandbox Code Playgroud)

.net networking firewall npgsql pgbouncer

6
推荐指数
0
解决办法
1909
查看次数

为什么Dapper使用/不使用mini-profiler连接生成不同的SQL

Dapper(1.13 Noobget Package)创建不同的SQL语句,具体取决于它是与普通的ADO.NET数据库连接一起使用还是与装饰的迷你探查器数据库连接一起使用.

示例代码(使用Postgresql测试)

Usings:

using System.Linq;
using Dapper;
using Npgsql;
using NUnit.Framework;
using StackExchange.Profiling;
using StackExchange.Profiling.Data;
Run Code Online (Sandbox Code Playgroud)

Test1使用普通的ADO.NET连接并失败:

[TestFixture]
public class DapperTests {
  private const string cnnstr = "HOST=...;DATABASE=...;USER ID=...;PASSWORD=...;";

  [Test]
  public void Test1() {
    using (var cnn = new NpgsqlConnection(cnnstr)) {
      cnn.Open();

      // The following line fails:
      cnn.Query<int>("SELECT 1 WHERE 42 IN @Items", new {Items = new[] {41, 42, 43}}).Single();

      // Npgsql.NpgsqlException : ERROR: 42883: operator does not exist: integer = integer[]
    }
  }
Run Code Online (Sandbox Code Playgroud)

Test2使用围绕ADO.NET连接的mini-profiler连接并成功: …

npgsql dapper mvc-mini-profiler mvcminiprofiler

6
推荐指数
1
解决办法
2752
查看次数

NpgsqlCopySerialize 和 NpgsqlCopyIn 发生了什么

我升级到 npgsql 3.0.3 并发现 NpgsqlCopySerialize 和 NpgsqlCopyIn 不再是 npgsql 命名空间的一部分。我在将数据从 sql server 移动到 postgresql 的流式复制类中使用了这些类。是否有任何类可用于替换这两个类提供的功能?

感谢大家花时间阅读本文。

c# postgresql npgsql

6
推荐指数
1
解决办法
2351
查看次数

如何在 EF Core 中实现 Select For Update

据我所知,EF(和 EF Core)中没有选项可以显式锁定我正在查询的资源,但我会经常需要这个功能,并且真的不想回到写作每次我需要它时都选择语句。

因为我只需要它用于 postgres 并且根据规范 FOR UPDATE是查询中的最后一项,所以我想到实现它的最简单的方法是获取如下所述的 select 语句:在 Linq to Entities 中,您能否将 IQueryable 转换为字符串SQL?并附加FOR UPDATE并直接执行它。然而,这要么给我一个带有参数占位符的查询,要么不是一个准备好的查询,这意味着执行计划的缓存不会真正在 postgres 上工作,所以无论哪种方式都行不通。

Linq to SQL 有这个方法,DataContext.GetCommand但在 EF 和特别是 EF Core 中似乎没有任何等效的东西。我还查看了 EntityFramework.Extended 及其批量更新/删除,但由于他们必须将 select 语句转换为不同的语句,因此他们需要处理比我复杂得多的问题,因此我希望有一个更简单的解决方案。

更新:

如果描述不清楚,我想创建一个这样的扩展方法:

public static IList<T> ForUpdate (this IQueryable<T> me)
{
    // this line is obviously what is missing for me :)
    var theUnderlyingCommand = me.GetTheUnderlyingDbCommandOrSimilar();

    theUnderlyingCommand.Text += "FOR UPDATE";
    return me.ToList();
}
Run Code Online (Sandbox Code Playgroud)

这样,其他开发人员可以像所有其他过程一样通过 Linq 使用 EF,而不是运行.ToList()他们会运行.ForUpdate(). …

postgresql entity-framework npgsql entity-framework-core

6
推荐指数
1
解决办法
8348
查看次数

实体框架核心:Npgsql.PostgresException:23505:重复键值违反唯一约束

当我尝试从 asp.net web api 插入用户时出现以下异常: Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> Npgsql.PostgresException: 23505: duplicate key value violates unique constraint

以下是我的实体模型:角色和用户。其中每个用户都链接到一个角色。

public class Role
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime? LastUpdate { get; set; }
}

public class User
{
    public int Id { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# postgresql entity-framework npgsql

6
推荐指数
2
解决办法
8892
查看次数

如何使用C#从数据库读取数组字段?

我正在使用 C# 和 postgresql。在数据库中,我有一个名为的表,在该表中我有一个名为其数据类型的test列,并且我存储了多个这样的记录。现在,如何将这些记录返回到 C# 程序中并存储在列表中arrdouble[]{1, 1, 2, 3, 0, 5, 1, 4}List<double[]> arr1 = new List<double[]>();

谁能帮我?

c# arrays postgresql npgsql

6
推荐指数
2
解决办法
4923
查看次数

通过在 JSONB 列上应用过滤器来查询 postgresql 中的数据

我有一个有 2 列的表;ID (int) and EntityData (JSON)。我在 C# 中以字典的形式创建了一个过滤器对象。我想获取满足过滤器中键值对数据的所有行。

示例过滤器是:

{
    "Name": "mike",
    "Location": "Lagos"
}
Run Code Online (Sandbox Code Playgroud)

这应该获取 EntityData 名称为 mike、位置为 Lagos 的所有行。

postgresql npgsql cockroachdb

6
推荐指数
1
解决办法
2万
查看次数

PostgreSQL 设置会话变量

我的应用程序使用相同的凭据连接到 PostgreSQL 数据库(数据库提供商要求...)但是我需要识别哪个应用程序用户正在连接到数据库(例如用于更新审核等)

我想知道是否有任何方法可以设置一些变量(其生命仅限于会话),然后我可以通过 DDL 读取该变量。

** 编辑 **

我还做了一些实验,在连接字符串中使用 application_name 并放置简单的用户登录 - 但这不是最优雅的方式......

SET application_name TO 'user_login';
select current_setting('application_name');
Run Code Online (Sandbox Code Playgroud)

知道如何存档吗?

.net postgresql auditing npgsql

6
推荐指数
1
解决办法
2万
查看次数

是否可以使用 npgsql 在 EF CORE 3.1 中使用 UNACCENT 扩展对 postgresql 进行选择?

我已经在 Npgsql and Entity Framework Query PostgreSQL with Npgsql and Entity Framework using unaccent中读到过有关此内容,但实体框架核心。

\n\n

是否可以使用 EF CORE 3.1 使用非重音扩展对 postgresql 进行选择?

\n\n

如何翻译,例如

\n\n
\n

select * from users where unaccent(name) = unaccent(\'Jo\xc3\xa3o\')

\n
\n\n

使用 EF core 和 npgsql 到 .net core 3.1

\n\n

谢谢

\n

postgresql npgsql ef-core-3.1

6
推荐指数
1
解决办法
455
查看次数