在NHibernate中映射私有字段(使用流利的NH)

Fel*_*ani 4 c# architecture nhibernate nhibernate-mapping fluent-nhibernate

我想知道,我如何映射(使用流利的nhibernate)这个模型:

public class Category
{
   private IList<Product> _products;
   public IEnumerable<Product> Products {
       get { return _products; }
   }
   /* others properties */   


   public Category() {
       _products = new List<Product>();
   }


   // to add a product i'd use something like this:
   public void AddProducts(Product product) {
      product.Category = this;
      _products.Add(products);
   }
}
Run Code Online (Sandbox Code Playgroud)

今天,我正在使用IList的属性,但我不想在我的属性上公开像"添加","删除"等方法......所以我想要公开IEnumerable的一个简单属性并封装像私人领域一样的IList!

那么,这是一个很好的实践吗?我怎么能用NHibernate映射它?

谢谢

干杯

Jam*_*Ide 6

如果您遵循NHibernate可以使用的命名约定,并且您的示例代码可以使用,那么它非常简单:

HasMany(x => x.Products).KeyColumn("ProductId")
    .AsBag().Inverse()
    .Access.CamelCaseField(Prefix.Underscore);
    // plus cascade options if desired
Run Code Online (Sandbox Code Playgroud)

我认为这不仅仅是一种很好的做法,我认为这几乎总是正确的做法.