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

Я понял, что проблема не в настройках прокси-сервера GPO, а в «Google Chrome» и в способе, которым он просто игнорирует файл PAC, предоставленный домашней сетью.

Так что я закончил разработку объекта групповой политики так, как мне хотелось:
[] Автоматическое определение настроек
[X] Использование автоматической настройки Скрипт
Адрес: http://10.20.30.44/krynn.pac
[] Использовать прокси-сервер ....
[] Обход ...

А потом я отредактировал этот чертов ярлык «Google Chrome» на каждом рабочем столе, чтобы добавить «--winhttp-proxy-resolver» в Chrome.

6
задан brian d foy 11 February 2009 в 18:07
поделиться

2 ответа

Насколько я знаю, Класс:: DBI не имеет хорошего способа сделать это, Как Вы отметили, update() метод предназначен, чтобы быть названным на объекте, который был ранее загружен из базы данных.

Вы можете убеждать Класс:: DBI, чтобы сделать то, что Вы хотите, однако, с чем-то вроде этого:

# Make new "empty" object
my $o = My::CDBI::Object->new;

# Set the primary key column and discard the change
$o->set(your_pk_column => 123);
$o->discard_changes;

# Set your other columns
$o->set(a => 'foo', b => 'bar');

# Do the update
$o->update;

Если эта функция будет важна для Вас, и Вы не уже слишком далеки в свой проект, то у Вас определенно будет лучшая удача с одним из более нового Perl ORMs, таким как Rose:: DB:: Объект или DBIx:: Класс. DBIx:: Класс даже включает Класс:: слой совместимости DBI.

6
ответ дан 10 December 2019 в 00:45
поделиться

Один способ, которым я нашел, чтобы сделать, это должно переопределить класс итератора по умолчанию для Ваших объектов. Это позволяет Вам иметь набор отдельных объектов с методом обновления на наборе. Класс:: DBI предоставляет метод для этого:

__PACKAGE__->iterator_class('MyClass::CDBI::Iterator');

Это позволяет Вам затем делать update метод в классе итератора, который может сохранить все объекты в наборе. Как таковой Ваш код может выглядеть примерно так:

my $collection = Object::DB->search_where({id => {'>=', 0}});
foreach my $obj ($collection->next()) {
  $obj->a('bob');
  $obj->b('tom');
}
$collection->update();

Который делает для некоторых вполне прилично самозарегистрированный код. Если бы Вы идете этим путем, я также предложил бы поместить is_changed метод в использование в качестве обновления () происходит. Это поможет Вам сэкономить время, не обновляя неизменные строки.

4
ответ дан 10 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

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