public class Customer { public string Name { get; set; } } public class Order { public Customer Customer { get; set; } }
public class Customer { public string Name { get; set; } public ICollection<Order> Orders { get; set; } } public class Order { public Customer Customer { get; set; } }
همان طور که با مثالهای آورده شده قابل مشاهده است، تصمیم به استفاده از ارتباط یک طرفه یا دوطرفه، تصمیمی صرفا فنی نیست و به شرایط قواعد کسب و کار نیز ارتباط مییابد.
اگر از ORM در طراحی لایه دسترسی داده استفاده شود، معمولا ارتباطهای دوطرفه در نگاه اول مشکل ساز به نظر نمیرسند، یا حتی لازم خواهند بود (برای استفاده از امکانات mapping بر اساس قرارداد). اما ارتباطات دو طرفه معمولا امکان دسترسی به اقلام اطلاعاتی را بدون در نظر گرفتن قواعد کسب و کاری لازم، بوجود میآورند. یکی از اشکالات اصلی طراحی با ارتباط دو طرفه ارتباط بیش از اندازه کلاسها با یکدیگر است. در این صورت ممکن است تغییر در یک کلاس، به کلاسهای دیگری نفوذ کند که این مورد خود یک الگوی کد بد بو است.
عموما با توجه به هزینهای که ارتباط دو طرفه ایجاد میکند، بهتر است استفاده از آن، تا آخرین لحظه نیاز به تعویق بیفتد و اولویت طراحی با ارتباط یک طرفه باشد.