问题标签 [npoco]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
814 浏览

c# - NPOCO:为什么我的自定义映射器没有被调用

在我的一个实体中,我需要一个特殊的映射,它将分隔字符串(来自数据库)转换为字典。而不是使用一些虚拟属性,我认为更优雅的方式是自定义映射器,如此处所述

我的问题是从未调用过映射器中的任何方法,并且 NPOCO 尝试将我的 db-string 转换为显然失败的字典。

也许我误解了映射器或遗漏了一些东西。但无法解释为什么它不起作用。

我的映射(简化)

我的映射器(不做太多)

我的数据层(构造函数)

因此,至少在我看来,一切都井井有条。任何我想念的想法。我目前正在使用 NPOCO 2.9.103 但我正在检查是否可以更新到 v3

0 投票
1 回答
95 浏览

c# - 实现 IDataItem 的每个类型都必须具有关联的字符串(SQL 选择 qry),但在类型实例化之前需要访问

我的应用程序有一组实现 IDataItem 的类型。它们都是代表数据库行的简单“DTO”类型。通过对数据库运行 SQL 选择查询,使用 PetaPoco(一种微型 ORM)创建实例。SQL 选择查询特定于类型,并且还取决于应用程序版本号(假设类型 X 具有属性 Y,但在应用程序版本 N 之前,DB 中没有对应的列 - 在这种情况下,查询返回默认值对于 Y)。

该应用程序的性质是这些类型有很多,并且将来数量会增加。我正在尝试在数据访问层中使用泛型来 (i) 最大限度地减少代码量并 (ii) 迫使未来的开发人员在设计类型时设计必要的 SQL 查询。

因此,在数据访问层中,我想要的是一种方法:

  • 有一个类型参数 T:IDataItem
  • 返回 T 的 IEnumerable
  • 查找与 T 关联的 SQL 选择查询
  • 使用 PetaPoco 对数据库运行查询以创建 T 列表(它比这更复杂一些 - 还有一个动态 where 子句,但为了保持简单而将其省略)

我的挑战是 - 如何在创建 T 的任何实例之前检索类型参数 T 的 SQL 查询。理想情况下,我会向 IDataItem 添加一个方法,例如字符串 SqlSelectFrom(int appVersion),但是我需要一个实例来调用它(如果只有一个接口可能需要一个静态成员!)。我现在拥有的最好的是数据访问层中的一个函数,如下所示(但这并不能真正满足我强制未来类型的开发人员实现 SQL 查询的要求):

有没有更好的模式来实现这一点?

0 投票
1 回答
379 浏览

c# - 为什么 AutoMapper 没有从 NPoco 动态对象映射到实体?

当我进行 NPoco 获取时

然后尝试用 AutoMapper 映射它

结果Product没有任何预期值,即使

  • 中的列名sql、中的NPoco.PocoExpando实例productsProduct类的名称和大小写都匹配。
  • expando 中的值对于每一列都是正确的。
  • 里面的二传手Product是公开的。

AutoMapper 文档表明我做的一切都是正确的。这是一个错误还是我错过了什么?

0 投票
0 回答
412 浏览

postgresql - 如何为 NPoco 配置 DbProviderFactory?

我正在从 PetaPoco 切换到 NPoco,但我的 PostgreSQL 实例使用 Npgsql 时出现连接问题。

  • 配置在我的 Web 项目的 web.config 中
  • NPoco/Npgsql 在 DAL 程序集中。
  • ConnectiongString 工作正常

问题似乎来自使用 NPoco 的 DbProviderFactory(因为它适用于 PetaPoco)。

  • 使用“invariant="Npgsql",我在数据库实例化时收到此错误消息:“无法找到请求的 .Net Framework 数据提供程序。它可能没有安装。”

  • 使用“invariant="Npgsql2"(如 NPoco 的 Wiki 中所示,即使我使用 NPoco v3),我在任何查询(但在 DB 实例化之后)都会收到此错误消息:“初始化字符串的格式不符合规范,从索引 0"

我试图更改“类型”以指示可以找到 Npgsql 的程序集,但它没有解决任何问题。

如何更改我的配置以使其正常工作?

0 投票
1 回答
2100 浏览

c# - npoco.插入在没有自动增量主键的表上失败

我在使用 nPoco 的“插入 T”方法时遇到问题,MySQL 表定义如下:

Database.Entity 定义为...

代码片段:

查看 nPoco 为这两个插入生成的 SQL,我看到了这个(来自我的日志文件)......

对于“T 的插入”方法,为什么 nPoco 认为 Id 列是标识列?从类定义中删除“PrimaryKey”属性没有帮助。

注意:此问题与此问题类似但可能略有不同。

0 投票
1 回答
847 浏览

sql - 带有表的 NPoco 普通 SQL 请求,列名从数据库映射中替换?

假设我有我的数据类

现在我想对我的表执行一个普通的 SQL 查询,但我不想在我的查询中硬编码表/列名。例如,“update some_table set some_column = replace(some_column, '...', '...')” 很糟糕,因为表、列名被硬编码到请求中。我更喜欢“update {{ MyData }} set {{ Name }} = ...”之类的东西,其中 {{ MyData }} {{ Name }} 将被 NPoco 数据库映射中的表、列名替换。是否可以从 NPoco 数据库中检索此信息?

0 投票
1 回答
469 浏览

npoco - 使用 NPoco 创建新数据库

我正在尝试使用 NPoco 创建一个数据库。我想知道我该怎么做?请列出在 Npoco 中创建/启动数据库的方法。在此先感谢

0 投票
0 回答
368 浏览

c# - NPoco:使用 OUT 参数调用 MySql 过程

在 C# 中,使用 NPoco (v3.4.3),我试图调用一个返回结果集和 OUT 参数的 MySQL 过程......

我真的不知道从哪里开始。我找到了一些 petapoco 示例,但它们似乎是特定于 SQL Server 的(使用 SqlParameter)。必须有一些特定于中午数据库的方法来使用与 MySQL 一起工作的 NPoco 来完成此任务。

0 投票
1 回答
718 浏览

npoco - Nopoc Execute() 方法返回 -1

我正在尝试使用 NPoco 将表值参数传递给存储过程

然后我得到的返回类型是-1

0 投票
1 回答
895 浏览

many-to-many - nPoco V3 - 多对多不工作

我有很多角色的用户

我试图实现的是让用户在一个查询中获得所有角色,但到目前为止我失败了。对于映射,我使用自定义的基于约定的映射器(我可以提供代码,但它相当大)

我尝试了 FetchOneToMany 并按照此处所述尝试了 Fetch

https://github.com/schotime/NPoco/wiki/One-to-Many-Query-Helpers https://github.com/schotime/NPoco/wiki/Version-3

但是角色总是空的。角色和用户本身已正确映射,我确实尝试指定关系

再次它没有帮助,角色是空的。

我不知道我错过了什么。有任何想法吗?