1

우리는 실버 라이트 앱에서 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); 

실제로 데이터베이스를 갱신하지만, 엔티티가 데이터베이스에서 다시 페치 될 때까지 클라이언트는 변경 사항을 갱신/통지하지 않습니다.

누구나 최선을 다하는 방법에 대한 좋은 아이디어가 있습니까?

답변

2

예 부르는

DBContext.SaveChanges() 

실제로 DbContext.SaveChanges 이후 데이터베이스

+0

에 변경 내용을() 도메인 서비스 방법 중 하나에 의해 실행되지 않습니다 나는 그것이 것이라고 확신했다 커밋 클라이언트에서 SubmitChanges()를 호출 할 때 "이벤트 체인"의 어딘가에 수행하면 이러한 변경 사항을 catch합니다. 그것은하지 않지만,이 작은 변화를 추가하는 것은 그것을 고정 시켰습니다. 감사. –