SubSonic 3.0.0.3 | Уровень доступа к данным - контрольные журналы - PullRequest
1 голос
/ 08 августа 2009

Привет, ребята, как вы реализуете контрольные записи для всех объектов / классов в SubSonic на уровне доступа к данным?

Если то, что я хочу, все изменения на всех объектах будут записаны в одну таблицу / объект.

public class AuditTrail
{
   public int Id { get; set; }
   public string SourceObjectName { get; set; }
   public int RowPK { get; set; } // Id of the SourceObject
   public string ChangeType {get; set;} // value such as "Add", "Update", "Delete"
   public string RowCapture { get; set; } // Id="6" UserId="xxx3" SurName="NoBodyx" FirstName="no3" MiddleName="B." Email="x@x.x3" CreatedDate="8/6/2009 1:57:58 PM" CreatedBy="ca3" UpdatedDate="8/7/2009 5:58:37 AM" UpdatedBy="qqq" Name="no3 B. NoBodyx"
   public CreatedDate {get; set;}
}

1 Ответ

0 голосов
/ 29 апреля 2010

Я обрабатываю все свои контрольные журналы непосредственно в базе данных, используя триггеры. Когда аудит происходит только с изменениями, которые поступают из кода, если кто-то возиться с данными через прямой запрос SQL или через Management Studio, вы не получите никакого следа. Я также обнаружил, что настройки, основанные на триггерах, работают лучше, чем настройки на основе кода, затрачивая меньше усилий.

Я использую хранимую процедуру, которая создает таблицу аудита для каждой таблицы и устанавливает все триггеры. Однако подобная настройка может указывать на одну таблицу аудита, если хотите.

Как только таблица аудита существует, вы можете извлечь данные из нее через Subsonic.

...