1
Вот дело, я получил 2 таблицы:проекция недвижимости в подзапросов NHibernate критериев
table (A) with columns (colA_1 | colA_2 | colA_ID) <br>
table (B) with columns (colB)
и я использую DetachedCriteria.For<AnyEntity>()
для запроса SQL.
Цель получить SQL-senerated как это:
Select A.colA_ID from A
where (CAST(colA_1 AS VARCHAR(10)) + CAST(colA_2 AS VARCHAR(10)))
in (select colB from B)
Заранее спасибо за любую помощь
Благодаря Радим, решение работает для простой задачи я в курсе, но реальная проблема является более сложной, чем я написал. Я пытался адаптировать это к своей ситуации, но я не добираюсь туда. Представьте, что в (CAST (colA_1 AS VARCHAR (10)) + CAST (colA_2 AS VARCHAR (10))) Я не хочу colA_2, но я хочу colC_2 из таблицы C. Это потому, что у меня есть составной ключ в EntityA, поскольку вы определенная в вашем решении –
Это слишком сложно. Такие сценарии превышают возможности инструментов ORM. Он не предназначен для решения NON стандартных ключей. Даже с точки зрения БД такие запросы являются наиболее неэффективными. Я хочу, чтобы вы могли предоставить вам общее решение с NHibernate здесь ... но единственный способ - исправить дизайн БД. Шутки в сторону. Вы можете сделать это сейчас или позже, но мой опыт говорит: нет другого пути ... извините. Удачи с NHibernate во всяком случае;) –
Еще раз спасибо Radim, мне удалось использовать параметр формулы для достижения того, что я хочу, например здесь [http://stackoverflow.com/questions/13114619/using-a-property-mapping-with-a -formula-in-nhibernate] (http://stackoverflow.com/questions/13114619/using-a-property-mapping-with-a-formula-in-nhibernate), но недостатком является смешивание чистого sql, который сломается преимущество целостности между моделью C# и БД. –