Проверка оператора вставки при использовании LINC SubmitChanges - PullRequest
4 голосов
/ 03 июня 2010

Я хочу посмотреть, как будет выглядеть мой оператор вставки, как если бы я проводил текстовую команду ADO.NET. Как мне это сделать?

Я перешел по ссылке ниже:

http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers

И добавил класс DebugTextWriter в мой проект. Итак, теперь в моем коде есть следующее, которое ничего не делает, и я не думаю, что это правильно:

    using(WorkbookDataContext dc = _conn.GetContext())
    {
        if(profile.ProfileId > 0)
        {
            dc.Profiles.Attach(profile, true);
        }
        else
        {
            dc.Profiles.InsertOnSubmit(profile);
        }

        dc.Log = new DebugTextWriter();

        #if DEBUG
            dc.Log = new System.IO.StreamWriter("linq-to-sql.log") 
            { 
                 AutoFlush = true 
            };
        #endif


        dc.SubmitChanges();
    }

Есть идеи, что я делаю неправильно и / или как правильно проверить мой оператор вставки LINQ?

Спасибо

1 Ответ

1 голос
/ 03 июня 2010

Как отобразить сгенерированный SQL (LINQ to SQL)

Вы можете просмотреть код SQL с помощью свойства Log.

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

db.Log = Console.Out;
IQueryable<Customer> custQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust;

foreach(Customer custObj in custQuery)
{
    Console.WriteLine(custObj.CustomerID);
}

Эти строки из окна консоли - это то, что вы видите, когда выполняете код C # выше.

SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactT
itle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Coun
try], [t0].[Phone], [t0].[Fax]
FROM [dbo].[Customers] AS [t0]
WHERE [t0].[City] = @p0
-- @p0: Input String (Size = 6; Prec = 0; Scale = 0) [London]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20810.0

AROUT
BSBEV
CONSH
EASTC
NORTS
SEVES

Альтернативно, вы можете использовать LINQ to SQL Debug Visualizer , чтобы навести курсор на выражение LINQ в отладчике VS 2008, а затем проверить необработанный SQL, который будет выполнять ORM во время выполнения при оценке выражения запроса LINQ.

...