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映射它?
谢谢
干杯
如果您遵循NHibernate可以使用的命名约定,并且您的示例代码可以使用,那么它非常简单:
HasMany(x => x.Products).KeyColumn("ProductId")
.AsBag().Inverse()
.Access.CamelCaseField(Prefix.Underscore);
// plus cascade options if desired
Run Code Online (Sandbox Code Playgroud)
我认为这不仅仅是一种很好的做法,我认为这几乎总是正确的做法.