我想知道,我如何映射(使用流畅的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映射它?
由于
干杯
答案 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