С чем следует сопоставлять строки в базе данных ORM? - PullRequest
1 голос
/ 04 мая 2009

Строки не ограничены, но, похоже, каждая нормальная реляционная база данных требует, чтобы столбец объявил свою максимальную длину. Это кажется довольно существенным расхождением, и мне любопытно, как типичные ORM справляются с этим.

Использование типа столбца 'text' теоретически даст вам гораздо больше строкового хранилища, но, насколько я понимаю, текстовые столбцы не могут быть запрошены или, по крайней мере, неэффективны (не проиндексированы?).

Возможно, я подумываю использовать что-то вроде NHibernate, но мои потребности в ORM относительно просты, поэтому, если я сам смогу написать это, это может спасти кое-что.

Ответы [ 2 ]

1 голос
/ 04 мая 2009

SqlServer, например, хранит только фактический размер данных. Для меня достаточно определить достаточно большой размер для строк, чтобы пользователь не распознал ограничения.

Exmaples:

  • название продукта, человек и т. Д .: 500
  • Пути, URL и т. Д.: 1000
  • Комментарии, свободный текст: 2000 или даже больше

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

Цитата: "Мои потребности в ORM относительно просты". Трудно сказать, является ли NHibernate излишним или нет. Доступ к данным обычно не так прост.

В качестве простого руководства для макушки головы, примите NHibernate, если:

  • У вас есть мелкозернистая или сложная модель предметной области. Вам необходимо отобразить наследование.
  • Вы хотите, чтобы модель вашего домена была несколько независимой от модели базы данных.
  • Вам нужны некоторые ленивые функции загрузки
  • Вы хотите быть независимым от базы данных, например. запустить его на SqlServer или Oracle

Если вы считаете, что класс для таблицы - это то, что вам нужно, вам на самом деле не нужен ORM.

1 голос
/ 04 мая 2009

Насколько мне известно, они не справляются с этим, либо вы позволяете ORM определить схему, а затем: ORM определит размер по умолчанию или определяется вашей конфигурацией.

Или схема не определяется ORM, тогда она просто должна подчиняться правилам, если вы вставите слишком большие строки, вы получите ошибки из БД.

Я бы остановился на типах varcharish, например varchar2 для оракула или nvarchar для сервера sql, если вы не имеете дело с сабами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...