我们在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; }
}
我们希望在域服务中更新这些值,以便我们不必在客户端上执行此操作(并且因为权限也将添加/更新服务器端(。我尝试通过修改域来执行此操作)像这样的服务方法:
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);
实际更新数据库的,但在从数据库再次获取实体之前,客户端不会更新/通知更改。
有没有人知道如何最好地实现这个目标?
答案 0 :(得分:2)
是的,请致电
DBContext.SaveChanges()
实际将更改提交到数据库