问题标签 [micro-orm]

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 投票
4 回答
4329 浏览

c# - dapper 应该使用“使用”语句吗?

我见过有人在做的例子:

或者以上是一种不好的做法,是否应该将所有查询都放在这样的语句中:

0 投票
1 回答
439 浏览

orm - 在静态类中使用 Dapper

我正在为我的系统构建同步。现在,我需要将所有执行的存储过程插入到一个表中。我的解决方案是添加一个静态类并让 Dapper 在其中运行。理论上,静态类/函数在不改变任何对象状态的情况下是可以使用的。我想我会格外小心,并询问你们的想法。它会导致任何问题吗?

0 投票
1 回答
1319 浏览

sql-server - VB.NET - PetaPoco\NPoco - 从具有动态和静态列的表中获取数据 - 性能问题

我有一个具体的情况,我还没有找到解决方案。

我有几个具有相同结构的数据库,其中有一个表(比如说),它具有已知的列,Users例如:UserID、、、等...在同一个表中,我有动态自定义列,我只能在运行时知道, 如: , , , 等...UserNameUserMailcustomField54customField75customField82

我有一个屏幕,我必须在其中显示用户列表,并且有数千条记录(必须显示所有用户 - 毫无疑问)。

数据库 A 中的 Users 表列如下所示:

例如,假设我有另一个数据库 B,那里的表用户看起来像这样:

我有一个代码,每次都连接到另一个数据库。所以我有一个代码->多个数据库,而每个数据库的区别是Users表的自定义字段。

如果我使用 DataTable,我可以查询:

然后,我可以动态检索自定义字段值,如下所示:


我的意图不是使用 DataTables。我想使用强类型对象。我无法使用内部的 customFields 创建用户的 POCO,因为对于每个数据库,Users 表都有不同的 customFields 列,因此我无法创建具有强类型变量的对象。

然后,我决定创建一个包含已知列的用户类,以及一个包含 customFields 的字典。

在 VB.NET 中,我创建了一个用户类,如下所示:

该类具有静态值:UserID,UserName等...此外,它具有customFieldIDs及其值的字典,因此我可以在单个操作中检索值(在 O(1) 复杂度中)


我使用 MicroORM PetaPoco\NPoco 来填充这些值。ORM 允许我获取用户数据,而无需我自己迭代数据,方法是调用:

但是customFields没有填充字典。为了填充,我必须迭代userList和为每个用户检索customFields数据。这是获取数据的一种非常昂贵的方式,并且会导致非常糟糕的性能。

我想知道是否有一种方法可以通过单个命令使用 PetaPoco\NPoco 将数据提取到 User 类中,并设法为每个用户填充已知值和自定义字段字典,而无需遍历整个集合.

我希望它被理解。这对我来说真的很难解释,也是一个很难找到解决方案的问题。

0 投票
2 回答
804 浏览

asp.net - PetaPoco \ NPoco - 部分插入

有没有办法使用 PetaPoco 或 NPoco 部分插入对象?例如,我有一个名为 Users 的表:

这些列中的每一列都是 NON NULLABLE 并且当它们为空时具有默认值。

在 ASP.NET 中,我有一个 User 类,我使用 ORM 插入一条新记录,其中只有名称:

我希望数据库如下所示:

我希望插入命令只插入名称,而不使用对象的默认值插入其他对象属性。

比如有部分更新,我要部分插入。这在 PetaPoco 中可能吗?

没有任何ORM,有没有另一种方法可以自己做?

编辑:

使用 SQL 我可以完成工作,但我需要使用 POCO 对象,所以我不想记住数据库参数。我想要类似的东西

它只会插入用户名,而忽略其他变量。我想在后台生成的 SQL 是:

如您所见,它没有考虑类中的其他变量。今天如果我使用插入命令,即使我给类中的单个属性赋值,NPoco 仍然尝试将所有类变量插入到数据库中,设置我不想用类的默认值设置的变量(与 db 默认值不同)

此外,所有属性都是可插入/可更新的,因此类中不能有任何 ResultColumn 类型。我想插入这些值,但只插入我在该特定实例中声明的值。所有属性都可以更新和插入,但对于每个实例,我只插入我声明的内容。

0 投票
0 回答
180 浏览

c# - MicroLite ORM 是否支持 DynamicObject / IDynamicObjectMetaProvider

我正在寻找一个支持 DynamicObject / IDynamicObjectMetaProvider 结构的微系统,例如:

填充:

它只是抛出一个MicroLiteException附加信息System.Object

MicroLite 是否支持此类对象?

0 投票
1 回答
66 浏览

azure - MicroLite 和 Azure SQL 数据库

在 Azure SQL 数据库上使用 MicroLite 时是否存在任何已知问题?

我们会遇到一些有点令人不安的奇怪行为。在审核数据库时,我们监控我们的查询是否由服务器以非常好的方式(50ns)处理。然而,“rpc 完成”事件的到达时间是它们应有的延迟的数千倍(500000ns)。在此服务器上使用实体框架时,我们没有此类问题。

0 投票
1 回答
222 浏览

ado.net - 为什么 Azure 数据库在事务方面表现更好

我们决定对 Azure 数据库使用 micro-orm。由于我们的业务只需要“插入”和“选择”,我们决定禁止所有代码管理SqlTransaction(数据没有并发问题)。

然后,我们注意到我们的 Azure 数据库实例响应非常缓慢。“ rpc completed ”事件发生的延迟是运行简单 sql 语句所需时间的数百倍。

接下来,我们使用 EF6 对我们的代码进行了基准测试,我们看到服务器响应非常快。由于 EF6 实现了一个内置事务,我们决定恢复SqlTransactionmicro-orm 上的 (ReadCommited),我们注意到一切都很好。

Azure 数据库是否需要显式SqlTransaction(由代码管理)?对SqlTransactionAzure 数据库性能有何影响?为什么以这种方式实施?

编辑:我将发布一些关于我们收集痕迹的方式的更精确的信息。似乎我们的 Azure 事件日志有时以纳秒为单位,有时以毫秒为单位。看起来很奇怪。

0 投票
1 回答
1054 浏览

dapper - Dapper Contrib 插入 MySQL 语法错误

嘿,我在 MySQL 中使用 Dapper.Contrib 出现语法错误

在 mysql 中插入的正确语法是

我的代码:

如何解决这个问题?提前致谢

0 投票
1 回答
1893 浏览

c# - 如何更新 NPoco 中的嵌套对象

我找不到在多对一情况下更新嵌套对象的示例。映射在 Fetch 上的工作方式非常清楚;而且我不是在说更新嵌套对象的集合,只是一个。所以给出下面的例子:

在数据库中,Student 表带有 CurrentSchool 列,该列是 School 表中记录的 ID。

我没有更新 School 对象本身,而是将学生映射到另一个对象。这在查询上很好,但是如果我更改 Student 上的 CurrentSchool 对象并使用 db.Update(studentObject) 保存,则外键不会更新。

0 投票
1 回答
4538 浏览

c# - Dapper 选择嵌套对象

我的 SQL 看起来像

我在 c# 端有我的课程,如下所示,我在 db 端也有三个表。我正在尝试查看是否可以使用 dapper 将 3 个表映射到一个对象 Order 而无需执行多个选择查询。我需要订单表中的前 3 行及其加载的子表。OrderDetail 对于 1 个 orderId 可以有 n 行。

如何使用 dapper 选择具有 1 次查找的嵌套对象?

这是我迄今为止尝试过但没有成功的方法

在此处输入图像描述