Automapper创建一个对象的2个实例

时间:2017-08-10 14:43:59

标签: c# automapper

我的`app.directive('focusMe', function($timeout) { return { link: function(scope, element, attrs, redactor) { scope.$watch(attrs.focusMe, function(value) { if(value === true) { $timeout(function() { element[0].focus(); scope[attrs.focusMe] = false; }); } }); } }; });` 对象的列表中包含Company,而我的Employees对象的列表中包含Payroll

在我的DTO中,假设Employeescompany都共享同一个payroll实例(只有一个员工对象)。

当我使用AutoMapper映射它们时:

employee

创建该员工对象的两个单独实例:

        var config = new MapperConfiguration(cfg => {
            cfg.CreateMap<DTOBusiness, Business>();
            cfg.CreateMap<DTOCompany, Company>();
            cfg.CreateMap<DTOPayRoll, PayRoll>();
            cfg.CreateMap<DTOEmployee, Employee>();
        });

        var business = config.CreateMapper().Map<Business>(dtoBusiness);

它们在属性上是相同的,但不是同一个实例。

这使事情变得非常尴尬,因为这些是DAL中的相同对象(并且需要是业务层中的同一对象)。

我可以阻止AutoMapper创建同一对象的2个实例吗?

1 个答案:

答案 0 :(得分:1)

您需要在地图上设置PreserveReferences。它会自动为您设置以防止递归。我想这不是这种情况。 The docs