Hai solo bisogno di una classe per agire come TextWriter che LINQ to SQL deve inviare tramite il metodo desiderato, ad es.
db.Log = new ActionTextWriter(s => logger.Debug(s));
Qui è uno scrittore di testo po 'ho scritto che prende un delegato e dispacci a quello in modo da utilizzare il codice precedente. Probabilmente vorrai cambiare questa classe in modo che ci sia voluto un logger, aver elaborato/diviso il testo e poi inviato a NLog.
class ActionTextWriter : TextWriter {
private Action<string> action;
public ActionTextWriter(Action<string> action) {
this.action = action;
}
public override void Write(char[] buffer, int index, int count) {
Write(new string(buffer, index, count));
}
public override void Write(string value) {
action.Invoke(value);
}
public override Encoding Encoding {
get { return System.Text.Encoding.Default; }
}
}
Impressionante, grazie :) – Jedidja