Frage

Ich möchte sehen, wie meine Einfügungsanweisung so aussehen würde, als würde ich einen textbasierten ado.net-Befehl verkabelt. Wie mache ich das?

Ich habe den folgenden Link verfolgt:

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

Und habe mein Projekt die Debugtextwriter -Klasse hinzugefügt. Jetzt habe ich in meinem Code Folgendes, was nichts wirklich tut und ich denke nicht, dass es richtig ist:

    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();
    }

Irgendwelche Ideen, was ich falsch mache und/oder wie ich meine linq -Einfügungsaussage richtig inspizieren soll?

Vielen Dank

War es hilfreich?

Lösung

Wie zu: Anzeige generiert SQL (linq to SQL)

Sie können den SQL -Code mit der Protokolleigenschaft anzeigen.

Beispiel: Verwenden Sie die Protokolleigenschaft, um den SQL -Code im Konsolenfenster anzuzeigen, bevor der Code ausgeführt wird. Sie können diese Eigenschaft mit Anfragen, Einfügen, Aktualisieren und Löschen verwenden.

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);
}

Diese Zeilen aus dem Konsolenfenster sind das, was Sie sehen, wenn Sie den obigen C# -Code ausführen.

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

Alternativ können Sie die verwenden LINQ an SQL Debug Visualizer Um über einen LINQ -Ausdruck zu schweben, während er im VS 2008 -Debugger 2008 ist, und dann die RAW -SQL zu inspizieren, dass das ORM zur Laufzeit bei der Bewertung des LINQ -Abfrageausdrucks ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top