Reflection 数据映射代码还是反射代码?

Reflection 数据映射代码还是反射代码?,reflection,data-access-layer,data-access,Reflection,Data Access Layer,Data Access,从数据库表中获取数据到代码中的对象似乎总是很普通的代码。我发现有两种方法可以做到这一点: 有一个代码生成器,用于读取数据库表并创建 类和控制器将数据字段映射到类字段或 使用反射获取数据库字段并在类中查找它 上述两种方法存在的问题如下所述 方法1在我看来似乎缺少了一些东西,因为我必须为每个表创建一个控制器 方法2在处理大量数据时似乎过于劳累 密码 是否有第三种途径可以尝试将数据从数据库获取到我的对象上?我使用反射来回映射数据,即使在大量数据访问的情况下也能很好地工作。“第三种方法”是手动完成所

从数据库表中获取数据到代码中的对象似乎总是很普通的代码。我发现有两种方法可以做到这一点:

  • 有一个代码生成器,用于读取数据库表并创建 类和控制器将数据字段映射到类字段或
  • 使用反射获取数据库字段并在类中查找它
  • 上述两种方法存在的问题如下所述

    • 方法1在我看来似乎缺少了一些东西,因为我必须为每个表创建一个控制器
    • 方法2在处理大量数据时似乎过于劳累 密码

    是否有第三种途径可以尝试将数据从数据库获取到我的对象上?

    我使用反射来回映射数据,即使在大量数据访问的情况下也能很好地工作。“第三种方法”是手动完成所有操作,这可能会加快运行速度,但编写速度非常慢。

    在这种情况下,您通常使用OR(对象关系)映射器。一个好的框架提供了更多的功能。这回答了你的问题吗?

    我同意lewap,ORM(对象关系映射器)在这些情况下确实很有帮助。您可能还需要考虑活动记录模式(在FoeLoad的企业架构书模式中讨论)。它确实可以在简单的应用程序中加速DAL的创建。

    我认为答案取决于您将要使用的语言的可用技术

    就我个人而言,我非常成功地使用了ORM(NHibernate),因此我自然会推荐选项一

    不过,您可能希望采取以下其他选择:

    • 如果您使用的是.NET,您可以选择使用类属性的属性作为类内的映射,或者作为可以反映的数据
    • 如果您使用的是.NET,Fluent NHibernate将使在代码中进行类型安全映射变得非常容易
    • 您可以使用泛型,这样您就不需要为每个表都创建控制器,尽管我承认您很可能会创建后者。然而,泛型可以包含所有表通用的大多数通用CRUD方法,并且您只需要编写特定的怪癖代码

    最好指定您正在考虑的平台/编程语言;答案可能取决于平台。