问题标签 [poco]
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.
c# - 不需要域对象污染的 C# 高级 XML 序列化程序
是否有任何用于 C# 的 XML 序列化程序的封闭或开源项目可以序列化大部分对象,而无需用大量属性污染我的域对象?这也将处理使用内部泛型类构建的集合的序列化?一个好处是它可以处理接口类型属性的序列化。另一个好处是它可以序列化具有只读属性的对象(或至少带有标记为内部的 get 访问器)
c# - 我可以使用 POCO 做什么?
我在实体框架中阅读了一些关于 POCO 的文章,但仍然不明白我可以用它做什么。POCO 如何使我的项目受益?
c# - 如何比较 POCO 之间的字段/属性?
可能重复:
比较 C# 中的对象属性
假设我有一个 POCO:
我想比较两个 Person 实例,看看它们是否相等。自然,我会比较Name
,DateOfBirth
和Relatives
集合,看看它们是否相等。但是,这将涉及我覆盖Equals()
每个 POCO 并手动编写每个字段的比较。
我的问题是,我怎样才能编写一个通用版本,这样我就不必为每个 POCO 都这样做?
c# - ORM/持久层建议
我正在开始一个新项目,我正在寻找一个非常好的 ORM 或一个非基于 SQL 的持久层。
对于这个项目,我真的不关心数据是如何持久化的,只要它可以以合理的速度进行查询和存储,最重要的是通过简单的查询。
并发应该被无缝处理(前端将在另一层,并且会有几个同时使用的用户,虽然不一定处理相同的数据)并且我不必关注数据层(简单查询,自动懒惰加载等)更好。
我还想不惜一切代价避免与基于字符串的查询相混淆,因此支持 LINQ 或其他直观且可能是强类型查询的工具会获得很大的好处。
最后使用 POCO 对象是我真正想做的另一件事
这是我评估过的产品列表以及它们不适合的原因,只是为了让我看不到有关使用这些产品的任何建议:
- NHibernate:疯狂的 xml 东西,设置太多,维护复杂性高,模型更改成本高,会话工厂很乱,不适合我的需求
- Castle ActiveRecord:基于 NHibernate,很少的文档加上一些与 NHibernate 相关的问题仍然适用。此外,为了获得体面的模型,它需要这么多属性,以致于手动创建模式会更好,而处理关系的方式是一种耻辱。
- Linq To SQL:缺少 POCO 对象,根据 MS 的说法,加班时间不会有太大改善(EF 是他们所承诺的)
- Entity Framweork:虽然在 v4 中 POCO 对象是可能的,但它们仍然非常老套,并迫使您做太多的手动工作来进行设置。此外,v4 只是一个测试版
- LLBLGen Pro:很好,尤其是使用 SelfServicing 适配器,但不是 POCO。此外,LINQ 提供程序还不完美。最后,通过 LINQ 删除一组对象是不可能的,这会导致混合 API(其中一个很不直观)并且我不喜欢。
- XPO:除了直观、非常慢、并发问题之外的任何东西,而不是 POCO
- SubSonic SimpleRepository:有几分钟我以为我在做梦。当我弄清楚这件事如何处理人际关系时,这个项目就结束了
我还研究了 MongoDB 和 CouchDB,但在这些情况下,相关对象的捕获看起来需要进行太多测试才能正确处理。此外,它们都不提供强类型查询。
提前感谢您的建议!
c# - POCO 应该从 DTO 派生还是最好不派生?
在创建 n 层解决方案时,我不想公开我的业务对象,而是使用 DTO 来代替它。另一方面,我不想一直重复定义对象并编写复制代码。
现在我的想法是编写包含所有必要字段和属性但没有逻辑(只有状态)的 DTO。
然后我会从那些 DTO 中派生出我的业务对象,用我的业务逻辑扩展它们,处理 DTO 基类属性。这些对象也将是使用的 ORM (NHibernate) 中持久化的对象。
使用这种方法,在服务器端,我可以处理业务对象并将它们直接传递给客户端(它们是派生的,因此可以向下转换)。我不会被迫以这种方式公开我的业务逻辑并节省大量代码。
你觉得这种做法合理吗?
问候,
塞巴斯蒂安
c++ - 如何使用 link.exe 进行静态链接
我一直在尝试使用 Visual Studio 2008 命令行工具在 Windows 上静态链接一个名为Poco的 C++ 库。
我用以下方式构建我的程序:
这会导致运行时需要 PocoNet.dll 和 PocoFoundation.dll 的 exe。
我花了一些时间阅读 Windows 中的链接,并了解到cl /MT
静态链接与标准库,而cl /MD
动态链接。
我试图指定/MT
,但这似乎并没有改变任何东西;我的应用程序仍然需要 Poco DLL。(我也怀疑这/MT
是默认行为。)
往下看..\poco\lib
,我发现还有一个 PocoNetmt.lib,但指定它而不是 PocoNet.lib 会导致一堆 LNK2005 错误(“已经定义”):
然后我尝试堆叠更多标志:
/verbose:lib
:对于查看正在发生的事情很有用/Zl
: 结果和之前一样
/li>/nodefaultlib:libcmt.lib /nodefaultlib:msvcprt.lib
: 得到这个错误:完全放弃
.lib
,如此处建议:与上述相同的错误
我也尝试了上述的一些组合,都无济于事。
任何线索将不胜感激。但同样有用的是任何指向有助于调试(或了解)这些类型问题的资源的指针。
c# - 使用实体框架 4 和代码优先从数据库中排除字段/属性
我想知道有没有办法从数据库中排除某些字段?例如:
如何从数据库中排除 AddressAs 字段?
nhibernate - 如何将对象从反射转换为通用集合?
我正在尝试编写一个比较方法来使用反射比较某些 POCO 中的属性,以确保它们已正确保存到数据库中。例如,假设我有这个 POCO:
我想做的是:
我使用的 ORM 是 NHibernate。到目前为止,我的比较方法如下所示:
Object.Implements()
是我写的一个扩展方法,用来判断一个类型是否实现了一个接口。如您所见,该方法是不完整的。我遇到的问题是,当我使用时property.GetValue(x, null)
,它返回一个object
,我不知道如何将它转换为特定的泛型ICollection
类型。我需要能够做到这一点,这样我才能使用 LINQ 来x.Contains(y)
比较两个集合是否相等。关于如何做到这一点的任何想法?
PS 我尝试使用Compare .NET Objects,但它在 NHibernate 的某个深处给了我一个空引用异常。它没有正确处理 NHibernate 如何代理ICollection
延迟加载。更糟糕的是,NHibernate 修改了 POCO 以支持延迟加载,但这都是在运行时完成的。在源代码中,看起来您只是在使用常规的ICollection
,但 NHibernate 在运行时将其更改为NHibernate.Collections.Generic.PersistentSet
,这就是导致比较器失败的原因。
c++ - Snow Leopard 上的链接错误
我在 Mac OS X Snow Leopard 上使用 Qt 和 Poco 创建了一个小型桌面应用程序。
Qt 工作正常,但是一旦我开始与 Poco 链接,我会收到以下警告:
此外,当我链接到 10.5 SDK 时:
关于如何解决这个问题的任何提示?
解决了!
这是我的解决方法(顺便说一句,我也在 Poco 论坛上发布了它):
问题是当没有指定架构时,Snow Leopard 默认为 64 位,而旧版本的操作系统默认为 32 位。在 Poco 构建系统中,Darwin 配置文件没有指定架构,所以它选择 32 位。我的解决方案是将 Darwin_x86_64 配置文件复制到 Darwin 文件上,并将“x86_64”的文本实例替换为“i386”。这会强制进行 32 位构建。
不过,这是一个有点骇人听闻的解决方案,让我知道是否可以以更清洁的方式完成...
subsonic - 亚音速将 POCO 映射到不同名称的表
我开始了一个小项目,想将 Subsonic 的 SimpleRepository 用于我的数据库层。如果我的数据库中有名为 Member 的表,并且我想创建一个名为 TeamMember 的 POCO。我可以通过属性或其他方法将类 TeamMember 映射到表成员吗?我要问的可能不是应该如何使用 SimpleRepository 对象,如果是这种情况,我将不胜感激任何建议。
谢谢你 - 埃里克