2013-03-06 75 views
1

我們在我們的Silverlight應用程序中使用了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() 

實際提交更改到數據庫

+0

由於DbContext.SaveChanges()從未被任何域服務方法運行我相信,這將當從客戶端調用SubmitChanges()時會在「事件鏈」的某個地方執行此操作,並且會捕獲這些更改。它沒有,但加入這個小改動修復了它。謝謝。 – 2013-03-06 11:45:27

相關問題