4

我围绕 ADO.NET 的 DbProviderFactory 编写了一个包装器,我在整个应用程序中都广泛使用了它。我还编写了很多将 IDataReader 行映射到 POCO 的代码。然而,由于我有大量的课程,所以要维护整个事情变得很痛苦。

我一直在考虑用像 Petapoco 这样的微型机器来代替整个 she-bang。我有几个疑问:

  1. 我有很多 POCO,其中包含其他 POCO 作为属性。Petapoco 对此的支持程度如何?
  2. 我应该使用像 Massive 或 Simple.Data 这样返回动态对象并将其映射到 POCO 的 ORM 吗?
  3. 我可以采取任何方法将行映射到 POCO 吗?我不能真正使用基于约定的工具,因为我的数据库在设计方式上并不是特别一致。
4

3 回答 3

0

Simple.Data 自动将其动态类型转换为静态类型。只要嵌套的属性是使用 .With 方法预先加载的,它就会映射它们。所以例如

Customer customer = db.Customer.WithOrders().Get(42);

将填充客户对象的 Orders 属性。

于 2012-08-24T16:05:42.113 回答
0

使用文本模板/代码生成器构建轻量级持久层怎么样?我有一个久经考验的开源项目TextMetal,它可以根据经过验证的真实架构决策生成必要的持久层。唯一缺少的是对象到对象的关系,但它确实支持查询表达式,并且可以很好地与设计不佳的数据模式配合使用。

您可以看到一个使用上述工具调用Can Do It For的真实世界项目。

一旦你看了一下,请随时向我询问任何设计决定。

于 2012-08-21T20:21:45.820 回答
0

你可以使用QueryFirst,还是修改它?它获取您的 sql 并将其包装在设计时生成的 vanilla ADO 代码中。每次保存文件时,您都会从结果架构中获得新的 POCO。此外,您可以通过工具菜单中的选项选择测试所有查询并重新生成所有包装器。它依赖于 Sql Server 和 SqlClient,所以除非你做一些修改,否则你将失去 DbProviderFactory。

于 2016-06-06T15:44:08.160 回答