我正在使用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#代码中获取此消息.
我正在开发与 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) 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 3.0.3 并发现 NpgsqlCopySerialize 和 NpgsqlCopyIn 不再是 npgsql 命名空间的一部分。我在将数据从 sql server 移动到 postgresql 的流式复制类中使用了这些类。是否有任何类可用于替换这两个类提供的功能?
感谢大家花时间阅读本文。
据我所知,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(). …
当我尝试从 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。在数据库中,我有一个名为的表,在该表中我有一个名为其数据类型的test列,并且我存储了多个这样的记录。现在,如何将这些记录返回到 C# 程序中并存储在列表中arrdouble[]{1, 1, 2, 3, 0, 5, 1, 4}List<double[]> arr1 = new List<double[]>();
谁能帮我?
我有一个有 2 列的表;ID (int) and EntityData (JSON)。我在 C# 中以字典的形式创建了一个过滤器对象。我想获取满足过滤器中键值对数据的所有行。
示例过滤器是:
{
"Name": "mike",
"Location": "Lagos"
}
Run Code Online (Sandbox Code Playgroud)
这应该获取 EntityData 名称为 mike、位置为 Lagos 的所有行。
我的应用程序使用相同的凭据连接到 PostgreSQL 数据库(数据库提供商要求...)但是我需要识别哪个应用程序用户正在连接到数据库(例如用于更新审核等)
我想知道是否有任何方法可以设置一些变量(其生命仅限于会话),然后我可以通过 DDL 读取该变量。
** 编辑 **
我还做了一些实验,在连接字符串中使用 application_name 并放置简单的用户登录 - 但这不是最优雅的方式......
SET application_name TO 'user_login';
select current_setting('application_name');
Run Code Online (Sandbox Code Playgroud)
知道如何存档吗?
我已经在 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\n\nselect * from users where unaccent(name) = unaccent(\'Jo\xc3\xa3o\')
\n
使用 EF core 和 npgsql 到 .net core 3.1
\n\n谢谢
\nnpgsql ×10
postgresql ×8
c# ×4
.net ×2
arrays ×1
auditing ×1
cockroachdb ×1
dapper ×1
ef-core-3.1 ×1
firewall ×1
networking ×1
pgbouncer ×1