Tag: npgsql

Npgsql / Postgresql:“函数不存在”时出现错误信息

抓住我的头。 有一个类似的问题可能与“函数不存在”有关,但我真的认为它确实 存在并且PostgreSQL函数不存在,但答案似乎并不十分明显。 PostgreSQL 9.5。 我有一个基于Npgsql的成员资格查询,如下所示: using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); using (var comm = new NpgsqlCommand(“get_user_by_username”, conn)) { comm.CommandType = CommandType.StoredProcedure; comm.Parameters.Add(“_user_name”, NpgsqlDbType.Varchar, 250).Value = username; comm.Parameters.Add(“_application_name”, NpgsqlDbType.Varchar, 250).Value = _ApplicationName; comm.Parameters.Add(“_online”, NpgsqlDbType.Boolean).Value = userIsOnline; using (var reader = comm.ExecuteReader()) { return GetUsersFromReader(reader).OfType().FirstOrDefault(); } } } 这个函数存在于我的postgresql数据库中: CREATE OR REPLACE FUNCTION […]

如何在Npgsql中将查询的表名作为命令参数提供?

我想提供查询的表名作为命令参数,如下所示: public class Foo { private const String myTableName = “mytable”; public void Bar() { NpgsqlCommand command = new NpgsqlCommand(“SELECT * from :tableName”, connection); command.Parameters.Add(new NpgsqlParameter(“tableName”, DbType.String)); command.Parameters[0].Value = myTableName; } } 这似乎导致了这个查询: “SELECT * from E’mytable'”导致错误(请注意单引号)。 我真的需要为此进行字符串连接吗? 从安全角度来看无关紧要,因为用户无法更改表名,但创建SQL查询的字符串连接总是让我感到毛骨悚然…… 谢谢,埃里克

PostgreSQL:42883运算符不存在:没有时区的时间戳=文本

我使用的是Npgsql 3.0.3.0和PetaPoco最新版本。 当我运行此命令时: var dateCreated = DateTime.Now; // just an example var sql = new Sql(“WHERE date_created = @0”, dateCreated.ToString(“yyyy-MM-dd HH:00:00”)); var category = db.SingleOrDefault(sql); 我收到以下错误: Npgsql.NpgsqlException 42883:运算符不存在:没有时区的时间戳=文本 我理解错误消息是说我正在尝试将时间戳(日期)与文本进行比较,但对我来说,比较它们是完全有效的,因为我期望构建以下SQL语句: SELECT * FROM category WHERE date_created = ‘2017-02-03 15:00:00’ 出于性能原因,我真的不想将我的数据库列强制转换为文本。

c#app中的npgsql问题 – 远程主机强行关闭现有连接

尝试从C#实用程序打开Postgresql数据库时出现以下错误: System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭现有连接。 —> System.Net.Sockets.SocketException:远程主机强行关闭现有连接 我试过从远程计算机和运行Postgresql服务器的计算机上运行该程序。 目前这两台计算机上都没有防火墙,我可以使用相同的密码通过postgres管理实用程序连接数据库和服务器。 我检查过用户名对数据库有权限。 这是我的连接代码: public bool updateFromServer() { try { NpgsqlConnection conn = new NpgsqlConnection(connString); conn.Open(); conn.Close(); return true; } catch (Exception e) { conn.close() return false; } } 任何帮助都将不胜感激。

Npgsql 4.0参数和空值

使用Npgsql传递空值看起来像这样: using (NpgsqlCommand cmd = new NpgsqlCommand(“insert into foo values (:TEST)”, conn)) { cmd.Parameters.Add(new NpgsqlParameter(“TEST”, NpgsqlDbType.Varchar)); cmd.Parameters[0].Value = DBNull.Value; cmd.ExecuteNonQuery(); } 哪个工作正常。 新的Npgsql 4.0文档建议使用强数据类型声明参数,如下所示: using (NpgsqlCommand cmd = new NpgsqlCommand(“insert into foo values (:TEST)”, conn)) { cmd.Parameters.Add(new NpgsqlParameter(“TEST”, NpgsqlDbType.Varchar)); cmd.Parameters[0].Value = DBNull.Value; cmd.ExecuteNonQuery(); } 传递DBNull.Value时,抛出一般exception: 无法将类型为“System.DBNull”的对象强制转换为“System.String”。 一切仍然适用于新的无拳击参数,但新语法似乎有意义,我们想要使用它…但如何解决此数据类型断开连接? 上面的例子是一个字符串。 我认为这也会影响数字和日期。

EntityFramework Npgsql DbConfiguration不起作用

我试图用Npgsql配置EntityFramework,首先是代码。 EntityFramework 6.1.3 Npgsql 3.0.5 现在,我想通过类设置自定义配置,让我们看看: public class DbConfig : DbConfiguration { public DbConfig() { SetProviderFactory(“Npgsql”, Npgsql.NpgsqlFactory.Instance); SetProviderServices(“Npgsql”, provider: NpgsqlServices.Instance); SetDefaultConnectionFactory(new NpgsqlConnectionFactory()); } } 和我的上下文类: [DbConfigurationType(typeof(DbConfig))] public class Db: DbContext { public virtual DbSet Products {get;set;} public Db(DbConnection Connection): base(Connection, true) { } public Db(): base() { } public Db(string connectionString): base(connectionString) { } protected […]

将Asp.net应用程序更新为Npgsql 3并删除Preload Reader

我已将我的ASP.NET应用程序从NpgSQL 2.2.5更新为3.0.1。 在重大更改中,它指定已删除Preload Reader支持。 所以我从字符串连接中删除它。 测试我的网络应用程序,我收到错误“操作已在进行中”。 特别是在这样的linq查询中 : var plugins = from p in _pluginRepository.GetPlugins() // this method return this: GetAll().OrderBy(p => p.Created) join e in _userPluginRepository.GetByUserId(user.Id).ToList() on p.Id equals e.Plugin.Id into pe from e in pe.DefaultIfEmpty() select new PluginViewModel { Active = e != null, Name = p.Translations.ToUserLanguage(loggedInUser), Key = p.Key, PluginId = p.Id, […]

PostGISentity framework

我试图使用Npgsql和Npgsql.EntityFramework与地理数据类型。 我可以将数据写入数据库,但我无法检索它。 我不确定这是否可行,所以我将不胜感激。 表示该表的类如下所示: internal class Geo { [Key, Column(“geo_test_id”)] public int GeoId { get; set; } [Column(“geography”)] public byte[] Geography { get; set; } } 数据插入如下所示: var geog1 = System.Data.Spatial.DbGeography.FromText(“POINT(-118.4079 33.9434)”); var geog2 = System.Data.Spatial.DbGeography.FromText(“POINT(2.5559 49.0083)”); using (var db = new Database.MyDbContext()) { db.Geos.Add(new Database.Geo() { Geography = geog1.AsBinary() }); db.Geos.Add(new Database.Geo() { Geography […]

使用dapper和postgresql抛出42601的“WHERE x IN y”子句:语法错误在“$ 1”处或附近

我有一个字符串数组,我想要一个包含IN子句的查询,如: “… WHERE t.name IN (‘foo’, ‘bar’, ‘baz’)..>” 这是我的查询的最后一位,其中包含“where in X in”子句: … left join genre_tag_band_join tj on hb.id = tj.band_id or ob.id = tj.band_id left join genre_tags t on tj.genre_tag_id = t.id inner join venues v on e.venue_id = v.id where t.name IN @tagsParam… 我像这样做一个Dapper电话 var shows = con.Query(query, (e, hb, ob, gt, v) […]

npgsql和Entity Framework代码首先设置问题

我得到的最新错误是 ERROR: 42P01: relation “dbo.__MigrationHistory” does not exist 但我确信这只是因为早先没有正确设置。 我目前正在尝试设置entity framework4.4代码首先使用Npgsql 2.0.12,我已经完成了以下操作,它似乎至少现在连接到数据库,但是当我做context.saveChanges()时给我上面的错误; 更新了.net 2.0.50727的machine.config; 将dll添加到项目中 将app.config更改为如下所示; 传入的数据如下所示 public class Animal {[Key] public int Id {get; 组; public string Name {get; 组; } public string描述{get; 组; } public int Age {get; 组; public int NoOfLegs {get; 组; }} 其他所有东西都是通用的现成环境 任何关于我做错了什么或提示或教程的帮助,任何事都会有所帮助。 这只是一个概念certificate,但我不介意让它工作。 抱歉对代码格式化的不良使用,堆栈交换不会让我因为某些原因正确使用它,即使它的格式正确。