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

时间:2010-07-20 18:14:17

标签: c# nhibernate architecture fluent-nhibernate nhibernate-mapping

我想知道,我如何映射(使用流畅的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);
   }
}

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

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

由于

干杯

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

您需要阅读这个流畅的nhibernate维基页面:

https://github.com/jagregory/fluent-nhibernate/wiki/Mapping-private-properties

相关问题