Feature request: dynamic properties
От: _nikola_  
Дата: 17.01.06 14:41
Оценка:
Очень часто бывают ситуации, когда для бизнес-объекта заранее неизвестен полный список полей или этот список часто меняется. И возникает постоянный напряг с поддержанием синхронизации кода, хранимых процедур и таблиц.

Было бы здорово, если бы маппер поддерживал сериализацию списка полей в одно бинарное или xml поле.

Поясню на примере:
public class Person
{
  public int Id;
  public string FirstName;
  public string LastName;

  [MapDynamicField("Comments")]
  public string ManagerComment; // => в поле "comments"
  [MapDynamicField("Comments")]
  public string ChiefComment; // => в поле "comments"
  
  [MapDynamicField("Stuff")]
  public DateTime BirthDate; // => в поле "stuff"
  [MapDynamicField("Stuff")]
  public double InternalRating; // => в поле "stuff"
}

Есть класс Person и в нем есть поля, которые 100% будут в релизе и они используются в поисковых запросах к базе уже в самом начале проекта: Id, FirstLast, LastName. А есть поля, которые пока нужны только для хранения контента и они абсолютно точно не используются в DAL и на первых итерациях проекта генерить их все в таблицах и запросах очень накладно по времени. Эти "контентные" поля помечаются атрибутом MapDynamicField и сверытаются в одно поле в таблице БД: ManagerComment и ChiefComment в Comments, а BirthDate и InternalRating в Stuff. При переходе к следующим итерациям с них по необходимости снимается атрибут MapDynamicField и они становятся обычными полями в таблице.

Если бы маппер поддерживал такую возможность, то это бы очень сильно ускоряло процесс разработки (особенно preview-версий для заказчика).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.