Silverlight アプリで RIA サービスを使用しており、エンティティの 1 つについて、誰がいつ作成および更新したかを追跡したいと考えています。このために、次のプロパティを追加しました。
public class Person
{
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public string LastModifiedBy { get; set; }
public DateTime LastModifiedOn { get; set; }
}
クライアントでこれを行う必要がないように、ドメインサービスでこれらの値を更新したいと思います(また、エンティティもサーバー側で追加/更新されるためです(。ドメインサービスメソッドを次のように変更して実行しようとしましたこれ:
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);
これは実際にデータベースを更新しますが、エンティティがデータベースから再度フェッチされるまで、クライアントは更新されず、変更が通知されません。
これを最もよく達成する方法を知っている人はいますか?