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();
}
理想情况下,我想通过引用传递实体,但我知道这是不可能的。我的问题是,如何实现这一点,以便我可以集中这些代码,而不必在每个服务类中实现。
任何类实例都是C#中的引用。请解释更多。 – Igor 2013-03-19 04:50:29
你为什么说你不能通过引用传递它?由于您的代码目前处于最新状态,因此将您的员工类传递给您的Create方法没有任何问题。 – shenku 2013-03-19 04:54:06
对不起,我应该澄清。就目前而言,我对此解决方案的实施不起作用。在基类中编辑的值不会像我所假设的那样影响员工实体。我的下一个想法是在提交之前通过引用来传递它。是的,我可以通过它,但如果我尝试通过引用来传递Create(ref雇员),编译器会抱怨我无法传递一个Employee,因为它期望一个IBaseEntity。 – XVargas 2013-03-19 04:59:57