Шаблон Репозиториев DDD с [закрытым] NHibernate

Если Вы верите в детерминированную вселенную, истинная случайность не существует.:-), Например, кто-то предположил, что радиоактивный распад действительно случаен, но по моему скромному мнению, просто потому что ученые еще не разработали шаблон, не означает, что нет шаблона там, чтобы быть разработанным. Обычно, когда Вы хотите "случайные" числа, в чем Вы нуждаетесь, числа для шифрования, которое никто больше не будет в состоянии предположить.

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

6
задан casperOne 5 April 2012 в 14:30
поделиться

1 ответ

Можно написать репозиторий, в котором по умолчанию выполняются операции CRUD. Например:

public interface IRepository<TEntity>
{
   TEntity FindByIdentity(object identity);
   TEntity FindBy(Expression<Func<TEntity, bool>> specification);
   IList<TEntity> FindAll();
   IList<TEntity> FindAllBy(Expression<Func<TEntity, bool>> specification);
   TEntity Save(TEntity saveable);
   void Delete(TEntity deletable);
}

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

Альтернативный путь - создать объект Query . Мы могли бы добавить интерфейс этого запроса на уровень Core / Business Logic, а реализацию - на уровень Services / Data. Таким образом, мы получаем запросы с красивыми названиями, например AllPreferredCustomersQuery . Это очень похоже на спецификации, но спецификации не используют инфраструктуру, и поэтому мы можем добавить ее на уровень Core / Business Logic. Объекты запроса более настраиваемы (например, можно добавлять ограничения, стратегии выборки, объединения и т. Д.)

3
ответ дан 17 December 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: