Tag: postgresql

C#连接到postgres数据库

这是我第一次连接数据库,但我遇到了一些问题 using Npgsql; namespace DBPrj { class Program { static void Main(string[] args) { bool boolfound=false; NpgsqlConnection conn = new NpgsqlConnection(“Server=; Port=5432; User Id=Admin; Password=postgres.1; Database=Test1”); // is an actual ip address conn.Open(); NpgsqlCommand cmd = new NpgsqlCommand(); NpgsqlDataReader dr= cmd.ExecuteReader(); //I get InvalidOperationException : The connection is not open. if (dr.Read()) { boolfound=true; Console.WriteLine(“connection […]

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参数化查询来完成这项工作?

在.NET Core中的IServiceCollection中不可用的UseNpgsql

我在Visual Studio 2017中有.NET Core项目。我正在尝试添加(Postgresql)数据库连接。 这是一个代码: public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddDbContext(options => { options.UseNpgsql(“ConnectionString”, b => b.MigrationsAssembly(“WebAPISample”)); }); } 但useNpgsql会生成以下错误: ‘DbContextOptionsBuilder’不包含’UseNpgsql’的定义,并且没有扩展方法’UseNpgsl’接受类型’DbContextOptionsBuilder’的第一个参数’(你是否缺少using指令或汇编refence?) 我安装了以下NuGet包: Microsoft.EntityFrameworkCore.Tools, Npgsql.EntityFrameworkCore.PostgreSQL, Npgsql.EntityFrameworkCore.PostgreSQL.Design. 我应该安装一些其他库吗?

建议使用Castle ActiveRecord插入许多行并忽略任何欺骗行

我有一个webmethod,它将一堆食谱插入到数据库的队列中(以存储用户有兴趣烹饪的食谱,类似于NetFlix的电影队列)。 用户可以立即检查一堆食谱并排队。 我有类似这样的代码: [WebMethod] public void EnqueueRecipes(SecurityCredentials credentials, Guid[] recipeIds) { DB.User user = new DB.User(credentials); using (new TransactionScope(OnDispose.Commit)) { foreach (Guid rid in recipeIds) { DB.QueuedRecipe qr = new DB.QueuedRecipe(Guid.NewGuid(), user, new DB.Recipe(rid)); qr.Create(); } } } 我对UserId / RecipeId有一个独特的约束,因此用户只能将配方排入一次。 但是,如果他们碰巧选择了已经在队列中的配方,我真的不想用错误消息打扰用户,我只想忽略该配方。 如果违反了唯一约束,上面的代码将抛出SQLexception。 解决这个问题的最佳方法是什么,只需忽略重复的行。 我目前的想法是: 1)首先从数据库加载用户的整个队列,然后首先检查该列表。 如果配方已存在,只需continue执行for循环。 优点:没有不必要的SQL插入发送到数据库。 缺点:较慢,特别是如果用户有一个大队列。 2)不要使用ActiveRecord,而是将整个recipeIds数组传递给SQL函数。 此函数将检查每行是否首先存在。 优点:潜在的速度,让SQL处理所有肮脏的工作。 缺点:打破ActiveRecord模式并需要新的DB代码,这通常难以维护并且实现成本更高。 3)每次循环后CreateAndFlush。 基本上,不要在单个事务中运行整个循环。 […]

Dapper是否适用于Mono?

我们正在考虑转移到Mono ,我发现Dapper可以使用MySql。 但是,这是使用ADO.NET提供程序。 Mono / Linux是否有MySql ADO.NET提供程序并且与Dapper一起使用? 最终我们计划将我们当前的站点从MySql迁移到PostgreSql,我也想知道同样的问题,还有Linux上的PostrgreSql,Mono和Dapper的内容?

将C#连接到PgBouncer

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