우리는 실버 라이트 앱에서 RIA 서비스를 사용하고 있으며 엔티티 중 하나의 엔티티에 대해 누가 언제 생성하고 업데이트하는지 추적하고 싶습니다. 이를 위해 우리는 이러한 속성을 추가했습니다 :엔티티를 삽입 또는 업데이트하는 동안 데이터를 추가하는 방법
public class Person
{
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public string LastModifiedBy { get; set; }
public DateTime LastModifiedOn { get; set; }
}
우리는 (클라이언트에이 작업을 수행 할 필요가 없도록 도메인 서비스에서이 값을 업데이 트하려는
및 entitities도 추가되기 때문에/업데이트 . 서버 측 (나는이 같은 도메인 서비스 방법을 수정하여 작업을 수행하려고 :.
public void InsertPerson(Person person)
{
person.CreatedBy = GetCurrentUser();
person.CreatedOn = DateTime.Now();
DbEntityEntry<Person> entityEntry = this.DbContext.Entry(person);
if ((entityEntry.State != EntityState.Detached))
{
entityEntry.State = EntityState.Added;
}
else
{
this.DbContext.Persons.Add(person);
}
}
public void UpdatePerson(Person person)
{
person.LastModifiedBy = GetCurrentUser();
person.LastModifiedOn = DateTime.Now();
DbContext.Persons.AttachAsModified(person, ChangeSet.GetOriginal(person), DbContext);
}
하지만이 모든 데이터를 추가하는 것 같지 않았어요 그때 삽입 한 후 SQL 쿼리와 함께 할 것을 시도/업데이트 대상 :
DbContext.Database.ExecuteSqlCommand("UPDATE Persons SET LastModifiedById = {0}, LastModifiedOn = {1} where Id = {2}", GetCurrentUser(), DateTime.Now, person.Id);
실제로 데이터베이스를 갱신하지만, 엔티티가 데이터베이스에서 다시 페치 될 때까지 클라이언트는 변경 사항을 갱신/통지하지 않습니다.
누구나 최선을 다하는 방법에 대한 좋은 아이디어가 있습니까?