• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / EntityFrameworkCore.Generator / 27730465225

18 Jun 2026 01:21AM UTC coverage: 74.693% (+19.8%) from 54.885%
27730465225

push

github

pwelter34
update tests

922 of 1609 branches covered (57.3%)

Branch coverage included in aggregate %.

7 of 7 new or added lines in 2 files covered. (100.0%)

230 existing lines in 23 files now uncovered.

4007 of 4990 relevant lines covered (80.3%)

1258.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

88.18
/src/EntityFrameworkCore.Generator.Core/Templates/MapperClassTemplate.cs
1
using EntityFrameworkCore.Generator.Extensions;
2
using EntityFrameworkCore.Generator.Metadata.Generation;
3
using EntityFrameworkCore.Generator.Options;
4

5
namespace EntityFrameworkCore.Generator.Templates;
6

7
public class MapperClassTemplate : CodeTemplateBase
8
{
9
    private readonly Entity _entity;
10

11
    public MapperClassTemplate(Entity entity, GeneratorOptions options) : base(options)
137✔
12
    {
13
        _entity = entity;
137✔
14
    }
137✔
15

16
    public override string WriteCode()
17
    {
18
        CodeBuilder.Clear();
137✔
19

20
        if (Options.Model.Mapper.Header.HasValue())
137!
UNCOV
21
            CodeBuilder.AppendLine(Options.Model.Mapper.Header).AppendLine();
×
22

23
        CodeBuilder.AppendLine("using System;");
137✔
24
        CodeBuilder.AppendLine();
137✔
25
        CodeBuilder.AppendLine("using AutoMapper;");
137✔
26
        CodeBuilder.AppendLine();
137✔
27

28
        var imports = new SortedSet<string>
137✔
29
        {
137✔
30
            _entity.EntityNamespace
137✔
31
        };
137✔
32

33
        foreach (var model in _entity.Models)
1,060✔
34
            imports.Add(model.ModelNamespace);
393✔
35

36
        foreach (var import in imports)
822✔
37
        {
38
            if (_entity.MapperNamespace != import)
274✔
39
                CodeBuilder.AppendLine($"using {import};");
274✔
40
        }
41

42
        CodeBuilder.AppendLine();
137✔
43

44
        CodeBuilder.Append($"namespace {_entity.MapperNamespace}");
137✔
45

46
        if (Options.Project.FileScopedNamespace)
137!
47
        {
48
            CodeBuilder.AppendLine(";");
137✔
49
            CodeBuilder.AppendLine();
137✔
50
            GenerateClass();
137✔
51
        }
52
        else
53
        {
UNCOV
54
            CodeBuilder.AppendLine();
×
UNCOV
55
            CodeBuilder.AppendLine("{");
×
56

57
            using (CodeBuilder.Indent())
×
58
            {
59
                GenerateClass();
×
UNCOV
60
            }
×
61

62
            CodeBuilder.AppendLine("}");
×
63
        }
64

65
        return CodeBuilder.ToString();
137✔
66
    }
67

68
    private void GenerateClass()
69
    {
70
        var entityClass = _entity.EntityClass.ToSafeName();
137✔
71
        var mapperClass = _entity.MapperClass.ToSafeName();
137✔
72

73
        if (Options.Model.Mapper.Document)
137!
74
        {
75
            CodeBuilder.AppendLine("/// <summary>");
137✔
76
            CodeBuilder.AppendLine($"/// Mapper class for entity <see cref=\"{entityClass}\"/> .");
137✔
77
            CodeBuilder.AppendLine("/// </summary>");
137✔
78
        }
79
        if (Options.Model.Mapper.Attributes.HasValue())
137!
80
        {
81
            CodeBuilder.AppendLine(Options.Model.Mapper.Attributes);
×
82
        }
83
        CodeBuilder.AppendLine($"public partial class {mapperClass}");
137✔
84

85
        if (_entity.MapperBaseClass.HasValue())
137✔
86
        {
87
            var mapperBaseClass = _entity.MapperBaseClass.ToSafeName();
137✔
88
            using (CodeBuilder.Indent())
137✔
89
                CodeBuilder.AppendLine($": {mapperBaseClass}");
137✔
90
        }
91

92
        CodeBuilder.AppendLine("{");
137✔
93

94
        using (CodeBuilder.Indent())
137✔
95
        {
96
            GenerateConstructor();
137✔
97
        }
137✔
98

99
        CodeBuilder.AppendLine("}");
137✔
100
    }
137✔
101

102
    private void GenerateConstructor()
103
    {
104
        var mapperClass = _entity.MapperClass.ToSafeName();
137✔
105

106
        var entityClass = _entity.EntityClass.ToSafeName();
137✔
107
        var entityFullName = $"{_entity.EntityNamespace}.{entityClass}";
137✔
108

109
        if (Options.Model.Mapper.Document)
137!
110
        {
111
            CodeBuilder.AppendLine("/// <summary>");
137✔
112
            CodeBuilder.AppendLine($"/// Initializes a new instance of the <see cref=\"{mapperClass}\"/> class.");
137✔
113
            CodeBuilder.AppendLine("/// </summary>");
137✔
114
        }
115

116
        CodeBuilder.AppendLine($"public {mapperClass}()");
137✔
117
        CodeBuilder.AppendLine("{");
137✔
118

119
        string? readFullName = null;
137✔
120
        string? updateFullName = null;
137✔
121

122
        using (CodeBuilder.Indent())
137✔
123
        {
124
            foreach (var model in _entity.Models)
1,060✔
125
            {
126
                var modelClass = model.ModelClass.ToSafeName();
393✔
127
                var modelFullName = $"{model.ModelNamespace}.{modelClass}";
393✔
128

129
                switch (model.ModelType)
393✔
130
                {
131
                    case ModelType.Read:
132
                        readFullName = modelFullName;
137✔
133
                        CodeBuilder.AppendLine($"CreateMap<{entityFullName}, {modelFullName}>();").AppendLine();
137✔
134
                        break;
137✔
135
                    case ModelType.Create:
136
                        CodeBuilder.AppendLine($"CreateMap<{modelFullName}, {entityFullName}>();").AppendLine();
128✔
137
                        CodeBuilder.AppendLine($"CreateMap<{entityFullName}, {modelFullName}>();").AppendLine();
128✔
138
                        break;
128✔
139
                    case ModelType.Update:
140
                        updateFullName = modelFullName;
128✔
141
                        CodeBuilder.AppendLine($"CreateMap<{entityFullName}, {modelFullName}>();").AppendLine();
128✔
142
                        CodeBuilder.AppendLine($"CreateMap<{modelFullName}, {entityFullName}>();").AppendLine();
128✔
143
                        break;
144
                }
145
            }
146

147
            // include support for coping read model to update model
148
            if (readFullName.HasValue() && updateFullName.HasValue())
137✔
149
                CodeBuilder.AppendLine($"CreateMap<{readFullName}, {updateFullName}>();").AppendLine();
128✔
150

151
        }
137✔
152

153
        CodeBuilder.AppendLine("}");
137✔
154
        CodeBuilder.AppendLine();
137✔
155
    }
137✔
156

157
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc