Orm 自动生成poco类

Orm 自动生成poco类,orm,poco,t4,Orm,Poco,T4,今天我在看一些技术: 一些迷你们型: 我理解这些技术的要点。我目前正在开发一个三层系统,我很想替换DAL(位于它自己的数据服务器上的数据访问层),并将其与一个小型ORM集成,如图所示。但是,我现在不会制定这样的计划。我们目前使用.NET远程处理(早于WCF) 因此,我希望在应用服务器上扩展这些新技术之一,而不是替换数据服务器上的任何东西 我已经研究了Entity Framework如何基于上下文自动生成POCO类,这是在构建EF后手动完成的,我想知道我是否可以不使用EF也这样做 以下是目前正在发

今天我在看一些技术:

一些迷你们型:

我理解这些技术的要点。我目前正在开发一个三层系统,我很想替换DAL(位于它自己的数据服务器上的数据访问层),并将其与一个小型ORM集成,如图所示。但是,我现在不会制定这样的计划。我们目前使用.NET远程处理(早于WCF)

因此,我希望在应用服务器上扩展这些新技术之一,而不是替换数据服务器上的任何东西

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

以下是目前正在发生的事实:

  • 向DAL发送sql语句(或存储过程)以执行
  • 通过TCP通道将数据集或数据表检索回应用程序
  • 我的问题是,是否可以根据从数据集返回的值,使用关键字“var”和“dynamic”自动生成一个动态POCO类,并在运行时对其进行动态映射?上面提到的任何技术都有帮助吗?或者我必须首先手动创建POCO类,并在其上进行映射吗

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

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


    真的,如果您不想使用完整的实体框架,我建议您使用micro-ORM,比如,等等。也就是说,除非你真的想重新发明轮子。

    谢谢你,我查阅了CustomTypeDescriptor,这是一个非常有用的工具。只是想知道,如果我在编译时知道数据集,为什么我不能手动创建一个POCO类呢?我知道T4在设计时编写代码时非常有用,在编译过程中更改代码的一个方面会自动更改另一个方面,但在我的例子中,我在运行时从数据服务器返回一个数据集。因此,选项2是我最好的选择。顺便说一句,我发现了一个非常好的概念,使用System.Dynamic.DynamicObject,我可以创建一个POCO类来继承它,并在运行时绑定以前不存在的任何返回属性。实际上,发现automapper确实有功能,并且可以使用ExpandooObject,它允许我进行映射:标记为答案,因为它在正确的方向上帮助了我,谢谢@sksallaj好东西--我完全忘记了
    ExpandoObject
    。我主要使用Silverlight,当然它没有。我还忘记了您可以在运行时使用T4,尽管这似乎是一个麻烦,至少在这种情况下是这样。