代码之家  ›  专栏  ›  技术社区  ›  Buddy Lindsey

在fluent nhibernate映射配置中,“实体”指的是什么?

  •  3
  • Buddy Lindsey  · 技术社区  · 16 年前

    我正在尝试更好地学习fluent nhibernate,所以我要从头开始做一个基本的示例应用程序,而不是使用其他人的else框架。但是,我发现我真的不明白在分配映射文件时发生了什么。我看过很多代码示例,它们都显示了相同的代码,但是没有任何东西能说明这一点。没有描述它是如何工作的,只是它的工作。下面是一个我经常看到的代码示例。

    return Fluently.Configure()
                .Database(config)
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Entity>())
                .BuildSessionFactory();
    

    那么在代码示例中什么是实体?这段代码是如何工作的?

    我的一部分人认为它是程序集的名称,但是看到我使用的名称空间通常是编译器抱怨我使用名称空间作为类型的程序集的名称。

    我觉得这很重要,我很慌乱,因为我搞不懂。

    谢谢

    2 回复  |  直到 16 年前
        1
  •  2
  •   s1mm0t    16 年前

    从程序集添加类型实体所属的程序集中的所有映射。AddFromAssembly将执行以下操作:

    typeof(TEntity).GetType().GetAssembly();
    

    这将获得实体所属的程序集,然后使用反射查找所有映射类。与其相信我的话为什么不 download the source 看看你自己:o)

        2
  •  1
  •   Tom Bushell    16 年前

    一千万已经回答了你的问题,不过我再详细说一下…

    在您看到的许多fnh示例中,entity是一个简单的基类,通常只包含被映射的类所需的id属性。

    然后,您希望映射的所有其他类都可以从实体继承。这允许您在一个地方将id类型从int改为guid等。

    顺便说一句,你不是唯一一个在整个“流畅配置”概念上挣扎的人…;-)

    有点离题,但是…

    与许多开源软件的建议相反,当我需要回答一个简单的问题时(至少到目前为止),我不愿意深入到一个我几乎无法理解的庞大代码库中。但我确实想把我从中受益匪浅的东西还给FNH项目。所以,一旦我了解了一些东西是如何工作的,我就会尝试更新wiki和其他文档。编辑维基很容易,fnh的作者们似乎很欣赏它。

    或许你也可以做些类似的事情?