自动生成poco类

时间:2013-12-16 23:23:57

标签: orm poco t4

今天我查看了一些技术:T4 templatingautomapper

一些迷你问讯:petapocosqlfuormlite

我理解这些技术提供的要点。我目前正在开发一个3层系统,我本来希望更换DAL(位于它自己的数据服务器上的数据访问层)并将其与迷你ORM集成,如图所示。但是,我现在不会制定这样的计划。我们目前使用.NET Remoting(早于WCF)。

因此,我不想替换DataServer上的任何内容,而是希望在应用服务器上扩展其中一项新技术。

我已经研究过Entity Framework如何根据上下文自动生成POCO类,这是在构建EF之后手动完成的,我想知道如果不使用EF我是否可以这样做。

所以这是关于当前发生的事情的事实:

  1. 将一个sql语句(或存储过程)发送到DAL以执行
  2. 通过TCP通道
  3. 将DataSet或DataTable检索回应用程序

    我的问题是,是否可以根据从DataSet发回的值使用关键字“var”和“dynamic”自动生成动态POCO类,并在运行时动态映射到它上面?上面提到的任何技术都有帮助吗?或者我是否必须先手动创建POCO类,并对其进行映射?

    如果应用程序可以知道POCO类应该具有什么,那么手动创建POCO类并将其映射到后端sql表似乎有点多余。就像我在后端更新表时会发生的情况一样,我也必须更新与之关联的POCO类。我很想让这对我来说是自动的。

1 个答案:

答案 0 :(得分:2)

  1. 如果您在编译时知道数据集,那么T4可能是一个选项。您可以编写一个T4脚本来下载数据库模式,并构造强类型实体类和数据库读/写方法。
  2. 对于迟到的(运行时)类,一个选项是使用CustomTypeDescriptor提供的运行时类型。您可以从服务器来回传递对象数组,并使用反射或其他技术来推断类型。
  3. 我认为应该清楚#1是更好的,如果你在编译时知道类型(这听起来像你的情况)。运行时和动态应该只是最后的手段,因为它绕过了许多有价值的编译时类型检查。

    实际上,如果您不想使用完整的实体框架,我建议您使用其中一个微型ORM,如Dapper等。也就是说,除非你真的想重新发明轮子。