2013-08-10 5 views
1

В настоящее время я пытаюсь найти лучший способ автоматического захвата изменений, внесенных при выполнении вставки или обновления. У нас есть требование отслеживать последнее время и дату, когда была изменена запись, а также идентификатор пользователя, выполняющего обновление/вставку.Linq to sql - Как автоматически записывать идентификатор пользователя и обновлять дату и время вставки/обновления?

Есть ли элегантный способ сделать это в linq для sql? На данный момент мы добавили метод Save ко всем нашим (частичным) классам, которые должны быть вызваны, но это вызывает проблемы, потому что не все наши разработчики не забывают использовать метод Save и по-прежнему используют контекст для своих данных операции доступа.

Кроме того, мы хотели бы оставить эту логику из базы данных, если мы сможем ей помочь.

ответ

0

Вместо создания метода сохранения на ваших частичных классах реализуйте метод OnValidate и установите там свои свойства.

public partial class MyClass 
{ 
    partial void OnValidate(System.Data.Linq.ChangeAction action) 
    { 
     if (action == System.Data.Linq.ChangeAction.Insert) 
     { 
      LastUpdated = DateTime.Now; 
      ChangedBy = "Me!"; 
     } 

    } 
} 

Этот метод вызывается автоматически для вас, когда передается файл данных.

+0

Как вы бы получили пользователя? – Pleun

+0

Зависит от вашего приложения. Вы сказали, что это веб-приложение, поэтому я мог бы представить из сеанса – iamkrillin

+0

Это не мое приложение. Но обычно классы linq to sql находятся на уровне данных и имеют доступ к сеансу ... – Pleun

 Смежные вопросы

  • Нет связанных вопросов^_^