我們在我們的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);
它實際上更新數據庫,但客戶端不會更新/通知更改,直到實體從數據庫中再次獲取。
有沒有人有如何最好地實現這個好主意?