我正在创建一个具有众多业务实体的应用程序。我想确保每次修改时,我都会相应地为记录添加时间戳并放置创建/修改用户。我有一组实体和这些实体的服务类。所有实体都实现了 IBaseEntity 并继承了 BaseService。
public interface IBaseEntity
{
int Id { get; set; }
DateTime CreatedOn{ get; set; }
DateTime LastModifiedOn { get; set; }
Employee CreatedBy { get; set; }
Employee LastModifiedBy { get; set; }
}
public abstract class BaseService
{
public void Create(IBaseEntity entity)
{
entity.CreatedBy = new Employee { Id = entity.Id };
entity.CreatedOn = DateTime.UtcNow;
entity.LastModifiedBy = new Employee { Id = entity.Id };
entity.LastModifiedOn = DateTime.UtcNow;
}
}
在我的 EmployeeService 中,我会在添加或附加实体之前调用我的基本 Update 和 Create 方法。
public Employee Create(Employee employee)
{
// Create User
base.Create(employee);
context.Employees.Add(employee);
context.SaveChanges();
}
理想情况下,我想通过引用传递实体,但我知道这是不可能的。我的问题是,我怎样才能做到这一点,以便我可以集中这些代码,而不必在我的每个服务类中实现。