如何使用約定來映射零件集合?如何映射通過只讀屬性訪問的集合?
public class Part
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class Car
{
private readonly List<Part> _parts = new List<Part>();
public virtual int Id { get; set; }
public virtual IList<Part> Parts
{
get { return _parts.AsReadOnly(); }
}
}
我已經試過這個慣例,但它始終要求字段名不帶下劃線前綴:
public class HasManyConvention : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Access.ReadOnlyPropertyThroughCamelCaseField(CamelCasePrefix.Underscore);
}
}
我受夠了1.2.0.694以及2.0.0.698嘗試過建立同樣的結果:
"Could not find field 'parts' in class 'TestFluentNHibernate.Car'"
「保護套」 不將使Parts Collection屬性爲只讀。它只會阻止外部類將引用更改爲另一個集合。爲了使它成爲只讀,你必須返回一個新的ReadOnlyCollection(Parts)或者返回IEnumerable(不是真正的只讀,但是給API消費者一個很好的指示)。有關這兩種方式的含義的更多信息,搜索SO,有許多關於此的線程。 – Trygve 2011-05-24 06:19:01