NHibernate: доступ к свойствам конфигурации (Диалект Sql) во времени выполнения

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

my_dict = {"A_key":my_list[:] ,"B_key":my_list[:],"C_key":my_list[:]}
my_dict["A_key"][4] = "Changed_Data"

. Здесь происходит то, что вы копируете список с начала до конца списка. Это называется разрезанием списка, когда вы «разрезаете» список от одного конца к другому. Когда вы разрезаете список, он возвращает обратно новый список от начального индекса до конечного индекса.

Вы предоставляете начальный индекс, используя [0:10], где 0 - начало, а 10 - конец. Если вы не указали начало и конец, возвращается весь список. Это может быть использовано для копирования списка.

Но это все еще то, что называется «мелкой копией», где, если у вас есть список внутри этого списка, тогда вложенный список все равно будет подвержен изменениям в основном списке. Это все еще может быть решено с помощью того, что называется глубокой копией,

from copy import deepcopy
old_list = [1, 2, 3, [4]]
new_list = deepcopy(old_list)
7
задан 11 November 2008 в 14:52
поделиться

2 ответа

Когда Вы создаете объект Конфигурации и загружаете XML и в конечном счете создаете SessionFactory, держитесь за ссылку на объект Конфигурации, Вы имеете.

Можно использовать объект Свойств ссылки Конфигурации, которую Вы имеете, или можно сделать что-то как Диалект. GetDialect (_configuration. Свойства).

4
ответ дан 6 December 2019 в 07:53
поделиться

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

Я нашел несколько других путей, которым нужна только ссылка на ISession ISessionFactory.

От ISession:

    public static Dialect GetDialect(ISession session)
    {
        Dialect dialect = session.GetSessionImplementation().Factory.Dialect;
        return dialect;
    }

От ISessionFactory:

    public static Dialect GetDialect(ISessionFactory sessionFactory)
    {
        var implementor = sessionFactory as ISessionFactoryImplementor;
        Dialect dialect = implementor.Dialect;
        return dialect;
    }
19
ответ дан 6 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

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