Есть ли способ выставить условия на листинг через сопоставление на nhibernate 2.2? - PullRequest
0 голосов
/ 21 октября 2019

Я работаю в устаревшей системе, в которой код не имеет документации и не следует шаблонов.

Некоторые части системы выполняют запросы, такие как session.Query<Entity>();, другие части Repository.GetAll();.

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

Недавно нам нужно было внести изменения в одну сущность и добавить столбец с именем active.

MyClass.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="my_class" table="my_class" lazy="true">
    <id name="Id" column="id" type="Int32" unsaved-value="0">
    <generator class="native">
        <param name="sequence">sq_my_class</param>
    </generator>
    </id>

    <property column="name" type="String" name="Name" not-null="true" length="200" />
    <property column="area" type="Double" name="Area" not-null="true" />
    <property column="type" type="Int32" name="Type" not-null="true" />
    <property column="fiscalization" type="Boolean" name="Fiscalization" not-null="true" />         
    <property column="active" type="Boolean" name="Active" not-null="true" />
</class>

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

1 Ответ

1 голос
/ 22 октября 2019

Попробуйте установить where="active = 1" на class элемент:

<class name="my_class" table="my_class" lazy="true" where="active = 1" >
...