При запросе я знаю, что могу использовать:
GetCommand(items);
Чтобы увидеть SQL, который будет выполнен.
Но при отправке изменений я не знаю, какчтобы сделать это.
Вы можете использовать это:
yourContext.Log = Console.Out;
Но я не уверен, регистрирует ли это весь SQL или просто select
s.
Ваш SQL отличается для каждого затронутого объекта.L2S будет использовать зависимости, чтобы определить порядок, в котором объекты должны быть сохранены (если порядок важен), затем создаст операторы SQL insert
, update
и delete
, чтобы сохранить изменения.Сгенерированные операторы (особенно для update
) зависят от того, какие свойства объекта изменились.В частности, нет способа просмотреть весь пакет, который будет выполнен.
ВОПРОС 1: существуют ли проблемы с эффективностью использования L2S для обновления таким образом?
Нет,Вот как любой другой слой автоматического доступа к данным будет выполнять обновления.
ВОПРОС 2 (возможно, это должен быть отдельный вопрос, но я попробую его здесь): есть ли общий способ просто контролироватьОператоры SQL, которые идут в SQL Server 2008 R2?Я отключаю все, кроме TCP для экземпляра и WireShark порт, но я надеюсь, что есть более простой способ.
Это должен быть другой вопрос, но ответ заключается в использовании трассировки.В то время как вы можете отслеживать любую версию SQL Server (включая Express), инструмент SQL Server Profiler, который поставляется со всеми версиями, отличными от Express, делает это очень легко.Если вам нужна дополнительная информация по этому вопросу, не стесняйтесь задавать другой вопрос, касающийся ваших конкретных проблем.