Использование ограничений Nhibernate без строк в имени свойства

StackOverflow https://stackoverflow.com/questions/3613363

Вопрос

Когда вы создаете критерии, вы можете добавлять ограничения, которые относятся к недвижимости. Есть 2 способа создания ограничения:

Restrictions.Eq(string propertyName, object value)
или
Restrictions.Eq(IProjection projection, object value)

Дело в том, что я не чувствую себя комфортно, проходя имен недвижимости как строки, поскольку они когда-либо изменится, мой проект будет скомпилировать, как обычно, и любые возможные несоответствие именования будут найдены только во время тестирования подразделения. Я пытаюсь осуществить TDD, но в ближайшее время это не произойдет, поэтому я пытаюсь ограничить зависимости от единицы тестирования для проверки на ошибки (пока нам не удастся обнимать TDD).

Есть идеи? Заранее спасибо!

Это было полезно?

Решение

Используйте LINQ, Неотложный (Nh3.x) или NH Lambda расширения (Nh2.x) или Расширения экспрессии Nhibernate (NH1.2)

Все они более напечатаны, чем просто используя строки.

Другие советы

Я чувствую твою боль.

Но нет способа поставить динамическую ссылку на ваши свойства, используя проекции в API критериев, точно так же, как вы не можете сделать отображение NHIBERNATE обнаруживать таблицу или изменение имени столбца.

Делая находку и заменить шаг за шагом с «свойством» с работой в большинстве случаев.

Пока у вас есть полный охват модульных тестов (вы не хотите?) Это не должно быть проблемой, если это :-)?

Другая причина Чтобы избежать использования строк для имен свойств заключается в том, что рефакторинг, использующий, например, Resharper, не может исправить эти ссылки. Это где свободно говоря, Nibernate действительно сияет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top