C#所有服务均可访问的全局方法
在我的项目中,我有很多获取和操作数据的服务 我想从每个服务访问一个方法,该方法基本上查询一个日志表,以获取实体的创建者/最后一个编辑器 注入/引用此方法的最佳方式是什么 例如,在我的SalesOrderService中,我有以下方法:C#所有服务均可访问的全局方法,c#,entity-framework,C#,Entity Framework,在我的项目中,我有很多获取和操作数据的服务 我想从每个服务访问一个方法,该方法基本上查询一个日志表,以获取实体的创建者/最后一个编辑器 注入/引用此方法的最佳方式是什么 例如,在我的SalesOrderService中,我有以下方法: public void GetSalesOrder(int salesOrderId) { SalesOrder salesOrder = _context.SalesOrder.Where(o => o.SalesOrderId =
public void GetSalesOrder(int salesOrderId)
{
SalesOrder salesOrder = _context.SalesOrder.Where(o => o.SalesOrderId == salesOrderId).FirstOrDefault();
//Insert into my view model here
CreatedBy = GetCreator("SalesOrder",salesOrderId);
}
如何生成和引用使用GetCreator方法查询日志的服务?如果所有受影响的表要么继承自单个基类,要么实现相同的接口,那么您可以在基类或扩展方法上使用具体方法,以便只编写一次实现,但是要流利地使用它 EF中的一些任务(如审计跟踪)可以单独使用命名约定来实现,但是,即使您将使用约定来执行逻辑,您仍然应该使用接口来执行约定,将其转化为规则,而不是一般准则 用法示例
public void GetSalesOrder(int salesOrderId)
{
SalesOrder salesOrder = _context.SalesOrder.Where(o => o.SalesOrderId == salesOrderId).FirstOrDefault();
//Insert into my view model here
CreatedBy = salesOrder.GetCreator();
}
当然,做同一件事有完全不同的方法,但是有了一个接口,通过IoC、T4脚本或其他自动化逻辑进行目标定位就简单多了。您使用的是哪个IoC容器?您能详细说明一下吗?你想做什么还不清楚。一个简化类似任务但仍允许高度定制的解决方案是使用T4脚本从数据模型类生成上下文,使用属性和接口约定有效地“填补空白”。这对我来说非常有效。
public void GetSalesOrder(int salesOrderId)
{
SalesOrder salesOrder = _context.SalesOrder.Where(o => o.SalesOrderId == salesOrderId).FirstOrDefault();
//Insert into my view model here
CreatedBy = salesOrder.GetCreator();
}