Ich muss einen Weg finden, herauszufinden, was der SQL SELECT, der bei der Interaktion mit EF generiert wird, ist. Ich habe die MSDN-Onlinehilfe gefunden, die sie beschreibt ObjectQuery.ToTraceString Method() und ich bin sicher, dass ich dem Beispiel genau gefolgt bin, aber es ist fehlgeschlagen. Ich erhalte die folgende Fehlermeldung:Der Versuch, dem Beispiel für ToTraceString() zu folgen, schlägt fehl. Warum?
CS1503 Argument 2: kann nicht von ‚string‘ in ‚System.Linq.Expressions.Expression>‘ konvertieren
ich nicht, warum ich diesen Fehler bin immer. Hier ist der Code, der den Fehler erzeugt:
Der MyDbContext ist eine Klasse, die ich definiert habe. Hier ist es die Definition:
public class MyDbContext : Model.CoreFrameworkEntities
{
public override int SaveChanges()
{
var modifiedEntities = ChangeTracker.Entries()
.Where(p => p.State == EntityState.Modified)
.Select(p => p.Entity);
foreach (var modified in modifiedEntities)
{
Console.WriteLine();
//modified.LastModifiedAt = now;
Console.WriteLine(modified.ToString());
Console.WriteLine();
}
return base.SaveChanges();
}
}
Und schließlich Model.CoreframeworkEntities
ist ein EF-Modell definiert eine EDMX-Datei zu erstellen. Es ist eine der Entitäten in der EDMX. (Ich verstehe, dass jede Entität, die in einer EDMX-Datei definiert ist, ein DbContext-Datentyp ist. Wenn das falsch ist, würde ich es gerne wissen.)
Ich bin mir nicht sicher, warum ich den Fehler bekomme das bin ich. Es scheint mir, als ob ich den MSDN-Artikel im Code verfolgt habe. Entweder ist der MSDN-Artikel nicht mehr gültig oder ich habe einen Fehler gemacht, möglicherweise in meinem Verständnis, was die Entitäten in einer Entitätsbeziehung/.edmx-Datei alles bedeuten. Ich hätte gerne Hilfe.
Oder 'db.Templates.Where (c => c.ID == idNum) .ToString()'. –
Danke Evk und Gert. Ihre Erklärung, warum es nicht funktioniert hat (weil der Artikel ObjectContext verwendet und ich eine Klasse verwende, die von DbContext abgeleitet ist), ist sinnvoll. (Nur eine Seite, ich wünschte, die Leute würden ihre Blogposts datieren.) Ich benutze FirstOrDefault(), also sollte ich vielleicht zuerst die ToString() benutzen und dann eine andere C# -Anweisung mit FirstOrDefault() machen. – Rod