Log
Позволяет протоколировать команды DML, которые выполняются методом LinterDataContext.SubmitChanges().
Декларация
public TextWriter Log { get; set; }
Значение свойства
Объект типа TextWriter, который используется для протоколирования DML-команд.
Исключения
ObjectDisposedException | Объект LinterDataContext освобождён методом Dispose(). |
Пример
// В примере создаётся класс Auto, который отображается на // таблицу AUTO в демонстрационной БД. Выполняется // сохранение, обновление и удаление объекта из БД. // Команды DML протоколируются в файл log.txt // C# using System; using System.Linq; using System.ComponentModel; using System.Data.Linq.Linter; using System.Data.Linq.Mapping; using System.IO; // Класс Auto отображается на таблицу AUTO [Table(Name = "AUTO")] class Auto : INotifyPropertyChanging { // Свойство Make отображается на поле MAKE [Column(Name = "MAKE")] public string Make { get { return _make; } set { if (!value.Equals(_make, StringComparison.Ordinal)) { SendPropertyChanging(); _make = value; } } } private string _make; // Свойство Model отображается на поле MODEL [Column(Name = "MODEL")] public string Model { get { return _model; } set { if (!value.Equals(_model, StringComparison.Ordinal)) { SendPropertyChanging(); _model = value; } } } private string _model; // Свойство PersonId отображается на поле PERSONID [Column(Name = "PERSONID", IsPrimaryKey = true)] public int PersonId { get { return _personId; } set { if (value != _personId) { SendPropertyChanging(); _personId = value; } } } private int _personId; private void SendPropertyChanging() { if (PropertyChanging != null) { PropertyChanging(this, new PropertyChangingEventArgs(string.Empty)); } } public event PropertyChangingEventHandler PropertyChanging; } class LogSample { static void Main() { // Формирование строки соединения var connectionStr = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8"; // Создание лога using (var log = new StreamWriter("log.txt")) { // Создание контекста using (var context = new LinterDataContext(connectionStr)) { context.Log = log; // Сохранение нового объекта var auto = new Auto { Make = "MAKE AUTO", Model = "MODEL AUTO", PersonId = 1001 }; context.GetTable< Auto >().InsertOnSubmit(auto); context.SubmitChanges(); // Обновление объекта auto.Model = "NEW MODEL"; context.SubmitChanges(); // Удаление объекта context.GetTable< Auto >().DeleteOnSubmit(auto); context.SubmitChanges(); } } } }
Если запустить пример, то в файл log.txt
будет выведен следующий текст:
INSERT INTO AUTO (MAKE, MODEL, PERSONID) VALUES ('MAKE AUTO', 'MODEL AUTO', 1001); UPDATE AUTO SET MAKE = :MAKE, MODEL = :MODEL, PERSONID = :PERSONID WHERE (PERSONID = 1001); DELETE FROM AUTO WHERE (PERSONID = 1001);