Как сохранить свойства отображения, связанные со свойствами класса C # в базе данных? - PullRequest
0 голосов
/ 28 ноября 2011

Итак, вот текущая проблема, с которой я сталкиваюсь:

  1. У меня есть классы бизнес-объектов C #, которые динамически генерируются из схемы XML.

  2. Я создаю формы динамически для отображения и захвата данных, связанных с моими бизнес-объектами.

  3. Я храню мои сериализованные (xml) объекты в базе данных.

  4. Мне необходимо сохранить свойства отображения, связанные с каждым свойством в моем бизнесе. Классы Object C # (Как это сделать ??)

Допустим, у меня есть бизнес-объект Person:

public class Person
{
   public string Name {get;set;}
   public PhoneType Phone {get;set;}
}

public class PhoneType
{
   public string HomePhone{get;set;}
   public string WorkPhone{get;set;}
}

Теперь допустим, я создал новую персону:

Person me = new Person();
me.Name = "BOB";
me.Phone = new PhoneType()
me.Phone.HomePhone = "1234";
me.Phone.WorkPhone = "4321";

Теперь, когда я строю свою форму, я знаю, что Person.Name - это TextBox с шириной = 300 и высотой = 30 а мой PhoneType.HomePhone и PhoneType.WorkPhone являются текстовыми полями шириной 200 и высотой = 30 *. 1027 *

Как лучше всего сохранить эти свойства отображения в базе данных и связать их с каждым из свойств в моих бизнес-объектах? Учитывая, что большинство моих бизнес-объектов представлены очень глубокими графами объектов ... поэтому мне интересно, как лучше всего рекурсивно хранить и восстанавливать свойства отображения из базы данных на основе глубокой иерархической природы моей модели.

Теперь несколько условий: -Я не хочу хранить статические формы, так как мое приложение очень динамично. XSD -> Код -> Форма -Дисплеи могут зависеть от пользователя (например, задний цвет определенного поля), поэтому не могут просто иметь общие шаблоны форм. -Мне просто нужен хороший механизм для сопоставления свойств POCO для отображения свойств, чтобы я мог создавать свои формы на лету и сохранять изменения в базе данных

В настоящее время я изучаю возможность создания свойства PropertyBag (коллекции) в каждом из моих бизнес-объектов и рекурсивного заполнения их во время навигации по графу объектов, но пока еще не далеко.

1 Ответ

1 голос
/ 28 ноября 2011

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

На самом деле мы также приписываем каждое из свойств в классах, чтобы отделить те, которые являются визуально важными, от тех, которые являются только «помощниками».

Во время выполнения мы используем отражение, чтобы получить атрибуты для классов и свойств, которые должны быть отображены, а затем извлечь соответствующий список визуальных модификаторов из базы данных.

...