2014-01-17 3 views
0

Я разрабатываю приложение DevExpress XAF, который имеет следующие бизнес-объектыПроектирование XAF Business Objects

Сотрудник Склад Заявитель

Каждый из этих объектов может иметь один или несколько адресов электронной почты

Как могу ли я выполнить это, используя один бизнес-объект EmailAddress?

ответ

2

Вы можете ввести базовый постоянный класс с коллекцией объектов EmailAddress (http://documentation.devexpress.com/#Xaf/CustomDocument2733), а затем наследовать от него другие классы. В качестве альтернативы наследованию вы можете использовать агрегацию.

Однако, я не совсем уверен, что вы подразумеваете под «использованием одного бизнес-объекта EmailAddress», возможно, вам не нужна функция коллекции, как я предложил выше.

P.S. Чтобы получить гарантированную и быструю помощь с продуктами DevExpress, используйте официальный центр поддержки (http://www.devexpress.com/Support/), доступ к которому предоставляется бесплатно в течение оценочного периода.

0

«Каждый из этих объектов может иметь один или несколько адресов электронной почты»

Идя выше заявление, что я мог бы сделать из вне, вы получили Employee в качестве бизнес-объекта и этими объектами может иметь несколько EmailIds. Я бы предположил, что вы создаете EmailId как еще один бизнес-объект с одним свойством EmailId и имеете отношения 1-to- * между вашими Employee и EmailId бизнес-объектами. Не забудьте скрыть свой бизнес-объект EmailId от навигационных элементов. EmailId должен быть доступен только пользователям, создающим новые объекты Employee, и в противном случае его нельзя создавать, независимо от каких-либо отношений.

Я знаю, что это очень поздний ответ на вопрос, но сообщите нам, как вы решили свою проблему. Делая это, вы можете помочь другим, столкнувшимся с аналогичной ситуацией, в которой вы оказались. Спасибо.

0

Создайте класс электронной почты без ссылки на любой другой класс. Затем создайте класс, который должен иметь коллекцию писем. Теперь у вас есть два варианта. Вы можете добавить несколько обратных ссылок в класс электронной почты с правильной ассоциацией для каждого родительского класса или создать отдельные дочерние (электронные) классы для каждого родителя. Ребенок будет унаследован от электронной почты и только добавит обратную ссылку к родительскому классу.

0

Вы можете использовать этот тип; (Я использую XPLiteObject, если вы хотите автоматически генерировать ключ, который вы можете использовать XPObject)

public class Person : XPLiteObject 
{ 
    public Person(Session session) 
     : base(session) 
    { 
    } 
    public override void AfterConstruction() 
    { 
     base.AfterConstruction(); 

    } 
    [Association("PersonEmails", UseAssociationNameAsIntermediateTableName = true)] 
    public XPCollection<Email> Emails 
    { 
     get 
     { 
      return GetCollection<Email>("Emails"); 
     } 
    } 



} 

public class Email : XPLiteObject 
{ 
    public Email(Session session) 
     : base(session) 
    { 
    } 
    public override void AfterConstruction() 
    { 
     base.AfterConstruction(); 

    } 

    private Person person; 
    [Association] 
    public Person Person 
    { 
     get { return person; } 
     set { SetPropertyValue("Person", ref person, value); } 
    } 

} 
Смежные вопросы