現在、私のエンティティではコレクションをIListとして公開していますが、ユーザーをコレクションに手動で追加できないようにIEnumerableとして公開することを考えています。私はこれらの操作の特定の追加をして、私の双方向関係が損なわれないようにすることができます。このシナリオでは、いくつか質問があります。HasManyとManyToManyの関係をIEnumerableとして公開する
- IEnumberableとして公開すると、エンティティ内の関係を表すすべてのコレクションに対して追加と削除のメソッドが必要になりますか?
- これを行う簡単な方法はありますか?私はちょうどこのことをやっているのではない。
- このようにしていますか?我々は唯一のIEnumerableを公開するように上記のクラスは、につながる変換
public class OrderHeader { public virtual Guid OrderId { get; private set; } public virtual IList<OrderLine> OrderLines { get; set; } public virtual void AddLine(OrderLine orderLine) { orderLine.Order = this; OrderLines.Add(orderLine); } //No need for a remove method since we expose collection as IList }
:
例
public class OrderHeader
{
public virtual Guid OrderId { get; private set; }
private IList<OrderLine> orderLines { get; set; }
public IEnumerable<OrderLine> OrderLines { get { return orderLines; } }
public virtual void AddLine(OrderLine orderLine)
{
orderLine.Order = this;
orderLines.Add(orderLine);
}
public virtual void RemoveLine(OrderLine orderLine)
{
orderLines.Remove(orderLine);
}
}
をだからあなたはどうしたら次のようになります。public IEnumerable {get {return new readOnlyCollection (orderLines); }} –