繁体   English   中英

实体类中的流利NHibernate映射类

[英]Fluent NHibernate mapping class within the entity class

我现在正在研究Fluent NHibernate,并且对映射有疑问。 这不是问题,而是最佳实践问题。

我知道Fluent NHibernate有一个新的Fluent映射,它需要一个新的Class来映射将由Entity Class使用的字段。 我想知道,如果映射类直接链接到实体类(它将为实体类进行映射),那么最佳实践是否规定它们不能在同一.cs文件中加入? 请注意,这里不会嵌套。

即:我的数据库中有一个Product表和一个ProductMap类,它们都用于Product表,因此我将这两个类放在同一Product.cs中,如下所示:

namespace Business.Entity
{
    public class Product
    {
        ...
    }

    public class ProductMap : ClassMap<Product>
    {
        ...
    }
}

如果这些类不应该在同一个文件中,那么您是否愿意解释原因,也许还带有实际示例?

提前致谢!

创建SessionFactory实例时,您将传递一个类,该类告诉哪个程序集具有映射定义。 然后,使用反射将遍历此程序集上所有从ClassMap<T>继承的类。

就是说,为了更快地初始化,最好使该程序集尽可能轻,这意味着最好只包含映射而不包含类定义的程序集。

AFAIK这是唯一的区别。 任何反馈将不胜感激。

您应该尽可能将实体持久性设计为无知的。

这意味着您不应该使ProductClassMap<Product>派生。 但这也意味着ProductMap甚至不应与您的实体位于同一项目中。

通常,您将有一个包含映射的DAL项目和一个包含实体的Domain / Business项目

您可以将两个类保留在不同的文件中,甚至可以保留在不同的名称空间中。 但是,如果您是初学者,则可以将实体类保存在不同的文件中,并将映射类保存在相同的命名空间中的其他文件中。

/* Product.cs */
namespace Business.Entity
{
    public class Product
   {
    ...
   }
}

/* ProductMap.cs */
namespace Business.Entity
{
    public class ProductMap : ClassMap<Product>
    {
    ...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM