0

我正在创建一个具有众多业务实体的应用程序。我想确保每次修改时,我都会相应地为记录添加时间戳并放置创建/修改用户。我有一组实体和这些实体的服务类。所有实体都实现了 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();
}

理想情况下,我想通过引用传递实体,但我知道这是不可能的。我的问题是,我怎样才能做到这一点,以便我可以集中这些代码,而不必在我的每个服务类中实现。

4

1 回答 1

1

伊戈尔是对的!我得到了“将 datetime2 数据类型转换为 datetime 数据类型导致超出范围的值。” 并假设没有设置这些值。这实际上是由于一个完全不同的问题。感谢您为我指明正确的方向。

于 2013-03-19T05:33:29.940 回答