Операторы ORACLE Batching DDL в рамках Выполнения Непосредственного

Образцовый предъявитель представления

В [1 122] MVP, Предъявитель содержит бизнес-логику UI для Представления. Все вызовы от Представления делегируют непосредственно Предъявителю. Предъявитель также разъединяется непосредственно от Представления и говорит с ним через интерфейс. Это должно позволить дразнить Представления в модульном тесте. Один общий атрибут MVP - то, что должна быть большая двухсторонняя диспетчеризация. Например, когда кто-то нажимает кнопку "Save", делегатов обработчиков событий к методу Предъявителя "OnSave". Как только сохранение завершается, Предъявитель тогда перезвонит Представлению через его интерфейс так, чтобы Представление могло отобразить это, сохранение завершилось.

MVP склонен быть очень естественным шаблоном для достижения разделенного представления в Веб-формах. Причина состоит в том, что Представление всегда создается сначала временем выполнения ASP.NET. Вы можете узнавать больше об обоих вариантах .

Два основных изменения

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

  • Pro: максимальная поверхность тестируемости; чистое разделение Представления и Модели
  • Con: больше работы (например, все свойства метода set), поскольку Вы делаете всю привязку данных сами.

Контроллер Наблюдения: Предъявитель обрабатывает пользовательские жесты. Представление связывает с Моделью непосредственно посредством привязки данных. В этом случае это - задание Предъявителя для выдавания Модели к Представлению так, чтобы это могло связать с ним. Предъявитель будет также содержать логику для жестов как нажатие кнопки, навигации, и т.д.

  • Pro: путем усиления привязки данных объема кода уменьшается.
  • Con: существует меньше тестируемой поверхности (из-за привязки данных), и существует меньше инкапсуляции в Представлении, так как это говорит непосредственно с Моделью.

Образцовый Контроллер Представления

В MVC, Контроллер ответственен за определение который Представление отобразиться в ответ на любое действие включая когда загрузки приложения. Это отличается от MVP, где действия направляют посредством Представления Предъявителю. В MVC каждое действие в Представлении коррелирует с вызовом к Контроллеру наряду с действием. В сети каждое действие включает вызов к URL с другой стороны, которого существует Контроллер, кто отвечает. Как только тот Контроллер завершил свою обработку, он возвратит корректное Представление. Последовательность продолжается тем способом в течение срока действия приложения:

    Action in the View
        -> Call to Controller
        -> Controller Logic
        -> Controller returns the View.

Еще одна большая разница о MVC - то, что Представление непосредственно не связывает с Моделью. Представление просто представляет и является абсолютно не сохраняющим состояние. В реализациях MVC Представление обычно не будет иметь никакой логики в коде позади. Это противоречит MVP, где это абсолютно необходимо, потому что, если Представление не делегирует Предъявителю, это никогда не будут называть.

Модель

Представления Еще один шаблон для взгляда на шаблон Модели Представления. В этом шаблоне нет никакого Предъявителя. Вместо этого Представление связывает непосредственно с Моделью Представления. Моделью Представления является Модель, созданная специально для Представления. Это означает, что эта Модель может представить свойства, что никогда нельзя было бы ставить модель предметной области, поскольку это будет нарушение разделения проблем. В этом случае Модель Представления связывает с моделью предметной области и может подписаться на события, прибывающие из той Модели. Представление тогда подписывается на события, прибывающие из Модели Представления, и обновляет себя соответственно. Модель Представления может представить команды, которые представление использует для вызова действий. Преимущество этого подхода состоит в том, что можно по существу удалить код - позади в целом, поскольку премьер-министр полностью инкапсулирует все поведение для представления. Этот шаблон является очень сильным кандидатом на использование в приложениях WPF и также назван Model-View-ViewModel.

существует статья MSDN о Модели Представления и разделе в Руководство Составного приложения WPF (прежняя Призма) [приблизительно 115] Разделенные Шаблоны Представления

5
задан OMG Ponies 26 April 2011 в 02:54
поделиться

2 ответа

Зачем вам нужен один вызов EXECUTE IMMEDIATE? Конечно, просто сделайте это как 2 вызова?

Имейте в виду, что каждый оператор DDL содержит неявный COMMIT, поэтому выполнение его как одного вызова не дает преимущества по параллелизму.

Кроме того, почему бы просто не правильно настроить таблицу в первый звонок? Вы могли бы сделать ...

CREATE TABLE TABLE1 (VALUE VARCHAR2 (50) NOT NULL, MYVAL2 NVARCHAR2 (10))

... вместо двух вызовов.

Кроме того, вы смотрели DBMS_METADATA. .. он может генерировать DDL для таких объектов, как таблицы.

2
ответ дан 14 December 2019 в 13:43
поделиться

Точка с запятой не является частью Oracle SQL синтаксис. SQL * Plus и другие инструменты на стороне клиента используют точку с запятой для обозначения конца оператора SQL, но сервер этого не видит.

Мы можем заставить SQL * Plus передать точку с запятой в БД:

SQL> set sqlterminator off
SQL> select * from user_tables;
  2  /
select * from user_tables;
                         *
ERROR at line 1:
ORA-00911: invalid character

Если i возьмите этот оператор и выполните его, он будет работать нормально (с; между двумя операторами) Клиентский инструмент, который вы используете, разбивает его на два вызова БД.

Так что я не думаю, что это можно передать несколько операторов внутри выполнения немедленно.

Я полагаю, можно было бы вызвать execute немедленно со строкой, содержащей анонимный блок PL / SQL, с отдельными вызовами для немедленного выполнения внутри него ... и я не знаю, какой смысл это делать. ;)

4
ответ дан 14 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

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