问题标签 [petapoco]
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.
orm - petapoco 插入问题
我有一个这样定义的类:
用于此的数据库表只是带有 ID 和 Name 属性的“位置”。
其他一些表“会议”有一个指向该表的外键。这超出了我在此示例中尝试使用的范围,但我认为它导致 PetaPoco 失败......
我正在尝试使用 PetaPoco 将新位置插入到数据库中,如下所示:
它会抛出这样的错误:
{“不存在从对象类型 System.Collections.Generic.List`1[[NHRepoTemplate.sampleUsage.sampleModel.Meeting, NHRepoTemplate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] 到已知托管提供程序的映射类型。”}
在我看来,子集合的存在导致 PetaPoco 无法插入,但是......必须有一种方法告诉它“忽略”它,对吧?
petapoco - ViewModel 中的 PetaPoco 查询
如果我有一个看起来像这样的视图模型
我将如何填充这个?
是否是对数据库的 2 个查询,1 个用于填充地址信息,另一个用于将所有国家/地区返回到 SelectList 中?
relational-database - PetaPoco 和多对一、一对多和多对多关系
PetaPoco以实验形式引入了 Multi-POCO 查询(目前)。正如他们的博客文章所建议的那样,当我们每行加载多个 POCO 时,它提供的代码看起来不错,而且都是一对一的关系,只要它们不在记录上重复。
当至少一侧是多关系时会发生什么?实际上示例代码是多对一的关系数据。
示例代码显然是多对一关系。我没有测试任何 PetaPoco 代码,但博文中提供的代码有什么作用?每个Article
人都有自己的User
对象实例,即使有些可能是同一个用户,还是他们共享同一个用户对象实例?
那么其他许多关系类型呢?他们是如何工作的?
model-view-controller - 从域实体对象调用数据库
我正在尝试在项目中使用 PetaPoco 而不是我通常使用的 NHIbernate,并且我对集合以及从域模型中使用它们有疑问。
假设我有一个带有名称和文本的 BlogPost,然后是带有名称、作者、文本的评论
我想将 BlogPost 与评论相关联。我已经在 SQL 中使用 Blogposts_Comments 表完成了这项工作。在 NHibernate 中,我只需要在 BlogPost 上有一个 Comments 集合并映射它,然后将其检索或标记为 Lazy。
我想我可能会延迟加载这些评论,所以要做到这一点,我会在博客文章 GetComments() 方法中调用我的数据访问对象 GetCommentsForBlogPost(this)。我的问题是,这被认为是好的做法吗?让您的域实体调用数据访问层?在我的 NHibernate 项目中,他们只是像 NHibernate 代理/魔术一样处理自己的事情。
c# - 动态查询的最佳选择?
我正在将一个旧应用程序从 WebForms 移植到 MVC,并且该过程的一部分是拆除现有的数据层,将逻辑从存储过程转移到代码中。因为我最初只使用基本的 C# SQL 函数 (System.Data.SqlClient),所以我使用了一个轻量级的伪 ORM ( PetaPoco ),它只将一条 SQL 语句作为一个字符串并执行它。构建动态查询在 SQL 中的工作方式大致相同 - 大量添加和删除附加代码的条件(平均查询有大约 30 个过滤器)。
所以看了一圈之后,我找到了一些选择:
- 一堆字符串和条件,根据需要添加查询的位。真的很讨厌,尤其是当查询变得复杂时,如果存在更好的解决方案,这不是我想要追求的。
- 一堆使用 L2E 的条件句。看起来更优雅,但我测试过 L2E 实在是太臃肿了,总体来说是一种糟糕的体验。我可以在 L2S 中做同样的事情吗?如果是这样,L2S 会在未来 5-10 年内持续存在吗?
- 使用PredicateBuilder。仍在研究这个,关于 L2S 的相同问题。
- 编辑:我也可以坚持现有的存储过程模型,但无论如何我都必须重写它们,所以看看其他选项不会有什么坏处,因为我仍然需要做腿部工作。
还有其他选择吗?任何人都可以对上述任何一种方法有一些经验吗?主要是,您选择的方法是否让您想要构建一台时间机器并为实现它而杀了你?
petapoco - 使用实体关系插入 PetaPoco
我有以下 POCO:
我有以下代码尝试在相应的表中进行插入:
用户上的插入工作正常,但订单上的插入却不行。当您在 POCO 中有这种关系时,您如何进行插入?这是一种简化的方法,因为我尝试插入的地方只有 Order POCO,那么如何插入到用户、订单和产品表中?
c# - 为什么 PetaPoco 从 db.Insert 一个 7 的 ID 字段作为小数返回
执行 Insert 时,变量 id 作为对象返回。但是在我的数据库中它是一个 int 而在我的 POCO 中它是一个 int 但是当调用 ExecuteScalar 以返回 @@IDENTITY 的方法调用时,它返回数字 7 作为一个对象,但调试器认为它是一个小数。
因此,当我这样做时,int newID = (int)db.Insert(...)
它会抛出一个
这是框架错误还是 PetaPoco 错误?
petapoco - 如果您没有 WHERE 语句,您如何执行自动选择子句?
在文档中它说你可以用表名和主键列装饰 POCO,这样你就不必指定 SELECT * FROM TABLENAME 可以只使用 WHERE ...
如果没有 WHERE 子句,如何使用此功能?
petapoco - 使用 Petapoco 批量插入/更新
我正在使用该Save()
方法插入或更新记录,但我想让它执行一次批量插入和批量更新,只有一次数据库命中。我该怎么做呢?
join - Petapoco 的多重映射可以处理多个 JOIN 吗?
我有一个使用 Petapoco 填充的对象列表。
类属性和名称与数据库模式相匹配。主类是Issue,它与另外两个名称和属性也与数据库模式匹配的类相关:Condition和SeverityLevel。
实际上,当我检索问题列表时,我正在使用多重映射功能使用单个命令检索问题列表和相关的SeverityLevel :
现在,因为 Petapoco 似乎不处理多个 JOINS,所以我需要执行第二步,将SourceCondition和TargetCondition附加到我检索到的每个问题。
为此,我可以:
- 在 foreach 循环中,在读取之后附加源和目标条件,
- 或检索整个条件列表,然后使用相同的 for-each 附加到每个问题。
目前,我正在使用第二种解决方案,因为数据库中的 Condition 集是有限的。
无论如何,这样做对我来说听起来有点沉重,因为它需要完成的查询几乎与添加的 JOINED 表一样多。
我想知道我是否可以实现这样的工作:
亲爱的 Petapoco 用户,亲爱的 Petapoco 作者,这是处理这个问题的方法吗?
我可以使用 Dapper 来处理这个问题吗(如果可以的话……),我绝对想保留 Petapoco 用于我的更新/插入操作?