Question

Je veux voir ce que ma déclaration d'insertion ressemblerait comme si j'étais câblage jusqu'à une commande ADO.NET à base de texte. Comment puis-je faire cela?

J'ai suivi le lien ci-dessous:

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

Et ont ajouté la classe DebugTextWriter à mon projet. Donc, maintenant, dans mon code que j'ai le suivant qui ne fait pas vraiment quoi que ce soit et je ne pense pas que son droit:

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

Toutes les idées que je fais mal et / ou comment contrôler mon LINQ insérer déclaration correctement?

Merci

Était-ce utile?

La solution

Comment: affichage généré SQL (LINQ to SQL)

Vous pouvez afficher le code SQL avec la propriété Log.

Exemple: utiliser la propriété Log pour afficher le code SQL dans la fenêtre de la console avant que le code est exécuté. Vous pouvez utiliser cette propriété avec requête, insérer, mettre à jour et de suppression des commandes.

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

Ces lignes de la fenêtre de la console sont ce que vous voyez lorsque vous exécutez le code C # ci-dessus.

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

Vous pouvez également utiliser le LINQ to SQL Debug Visualiseur pour planer au-dessus d'une expression LINQ tandis que dans le débogueur VS 2008, puis inspecter le SQL brut que l'ORM exécutera lors de l'exécution lors de l'évaluation de la requête LINQ expression.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top