#eclipse #ecore
#eclipse #ecore
Вопрос:
Я знаком с Entity Framework и дизайном кода в Visual Studio, но у меня мокрые ноги с Eclipse. Тем не менее, я пытаюсь понять, как некоторые свойства атрибутов EReference преобразуются в моделях ecore. В частности, когда я читаю о контейнере и сдерживании, я теряюсь. Являются ли эти поля каким-либо образом переводимыми либо в отношения внешнего ключа SQL, либо в объектные отношения модели сущности? Я могу понять оба из них довольно хорошо. В частности, в терминах SQL или EF, что это значит, когда container=true , что это значит, когда containment=true .
Ответ №1:
Я не знаком с SQL или EF, но из того, что я читаю, внешний ключ больше похож на EReference (а другие поля являются EAttribute, при этом «первичный ключ» является EAttribute с isID, установленным в true).
Сдерживание в Ecore является частным случаем EReference. Ключевой частью является то, что EObject может содержаться только одним другим EObject. Я думаю, что лучше всего было бы просто попробовать это на простой метамодели Ecore!
Комментарии:
1. Итак, если один EObject содержится только в другом EObject, будет ли это установлено на стороне многих или на одной стороне отношения «один ко многим»? Например, клиенты: заказы будут отношением «один ко многим»? Я предполагаю, что правильная настройка этого параметра позволит получить фактическое объектное представление данных и позволит мне получить (в приведенном выше примере) массив объектов заказа из любого заданного объекта customer.
2. Свойство сдерживания устанавливается на EReference. Ссылка ER принадлежит классу EClass («отправная точка» или «содержащий объект» ссылки EReference, точно так же, как в Java вы определяете атрибуты / ссылки в классе, из которого отправляется ссылка), так что в этом смысле, да, ограничение установлено на «одной» стороне отношения. Ссылка из EClass «Customer» в EClass «Order» с верхней границей кратности * предоставит доступ в объекте Customer к списку объектов Order, да. «Контролируется ли жизненный цикл элементов заказа клиентом или нет?» определяет, является ли это контейнером