Я немного погуглил, но мне еще предстоит найти решение или хотя бы однозначный ответ на мою проблему.
Проблема проста.Я хочу динамически создать таблицу для каждого экземпляра динамически именуемого / созданного объекта.Каждая таблица будет содержать записи, относящиеся к объекту.Я знаю, что это по сути анти-паттерн, но теоретически эти таблицы могут стать довольно большими, поэтому размещение всех данных в одной таблице может привести к проблемам с производительностью.
Более конкретный пример:
У меня есть базовый класс / интерфейс ACCOUNT, который содержит коллекцию транзакций.Для каждой компании, использующей мое программное обеспечение, я создаю новую конкретную версию класса, BOBS_SUB_SHOP_ACCOUNT или SAMS_GARAGE_ACCOUNT и т. Д. Таким образом, идентифицирующим значением для класса является имя класса, а не поле в классе.
Я использую C # и Fluent nHibernate.
Итак, мои вопросы:
- Имеет ли это смысл или мне нужно уточнить больше?(или я пытаюсь сделать что-то, чего ДЕЙСТВИТЕЛЬНО не должен?)
- У этого шаблона есть имя?
- Поддерживает ли это nHibernate?
- Знаете ли вы о каких-либодокументацию по шаблону, который я мог прочитать?
Редактировать: Я думал об этом немного больше, и я понял, что мне ДЕЙСТВИТЕЛЬНО не нужны динамические объекты.Все, что мне нужно, это способ привязать объекты с некоторым идентификатором к таблице через NHibernate.Например:
//begin - just a brain dump
public class Account
{
public virtual string AccountName { get; set; }
public virtual IList Stuff { get; set; }
}
... somewhere else in code ...
//gets mapped to a table BobsGarageAccount (or something similar)
var BobsGarage = new Account{AccountName="BobsGarage"};
//gets mapped to a table StevesSubShop(or something similar)
var StevesSubShop = new Account{AccountName="StevesSubShop"};
//end
Этого должно хватить для того, что мне нужно, предполагая, что NHibernate разрешит это.Я стараюсь избегать ситуации, когда один гигантский стол получит чертовское преимущество, если в таблицах счетов появится большой объем.Если бы все учетные записи были в одной таблице ... это было бы ужасно.
Заранее спасибо.