Consultation des états d'insertion lors de l'utilisation des SubmitChanges de LINQ
-
23-10-2019 - |
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
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.