簡體   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