2013-03-06 43 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

相关问题