1

Мы используем службы RIA в нашем приложении Silverlight, и для одного из наших объектов мы хотим отслеживать, кто создает и обновляет их и когда. Для этого мы добавили эти свойства:Как добавить данные при вставке или обновлении объектов

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() из клиента и поймайте эти изменения. Это не так, но добавление этих небольших изменений исправило это. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^