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

loresoft / EntityFrameworkCore.Generator / 15303740763

28 May 2025 03:07PM UTC coverage: 54.841% (-0.2%) from 55.036%
15303740763

push

github

pwelter34
add file header support

642 of 1331 branches covered (48.23%)

Branch coverage included in aggregate %.

14 of 33 new or added lines in 14 files covered. (42.42%)

3 existing lines in 3 files now uncovered.

1873 of 3255 relevant lines covered (57.54%)

61.12 hits per line

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

0.0
/src/EntityFrameworkCore.Generator.Core/Templates/ModelClassTemplate.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 ModelClassTemplate : CodeTemplateBase
8
{
9
    private readonly Model _model;
10

11
    public ModelClassTemplate(Model model, GeneratorOptions options) : base(options)
×
12
    {
13
        _model = model;
×
14
    }
×
15

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

NEW
20
        if (_model.ModelHeader.HasValue())
×
NEW
21
            CodeBuilder.AppendLine(_model.ModelHeader).AppendLine();
×
22

23
        CodeBuilder.AppendLine("using System;");
×
24
        CodeBuilder.AppendLine("using System.Collections.Generic;");
×
25
        CodeBuilder.AppendLine();
×
26

27
        CodeBuilder.Append($"namespace {_model.ModelNamespace}");
×
28

29
        if (Options.Project.FileScopedNamespace)
×
30
        {
31
            CodeBuilder.AppendLine(";");
×
32
            CodeBuilder.AppendLine();
×
33
            GenerateClass();
×
34
        }
35
        else
36
        {
37
            CodeBuilder.AppendLine();
×
38
            CodeBuilder.AppendLine("{");
×
39

40
            using (CodeBuilder.Indent())
×
41
            {
42
                GenerateClass();
×
43
            }
×
44

45
            CodeBuilder.AppendLine("}");
×
46
        }
47

48
        return CodeBuilder.ToString();
×
49
    }
50

51
    private void GenerateClass()
52
    {
53
        var modelClass = _model.ModelClass.ToSafeName();
×
54

55

56
        if (ShouldDocument())
×
57
        {
58
            CodeBuilder.AppendLine("/// <summary>");
×
59
            CodeBuilder.AppendLine("/// View Model class");
×
60
            CodeBuilder.AppendLine("/// </summary>");
×
61
        }
62
        if (_model.ModelAttributes.HasValue())
×
63
        {
64
            CodeBuilder.AppendLine(_model.ModelAttributes);
×
65
        }
66
        CodeBuilder.AppendLine($"public partial class {modelClass}");
×
67

68
        if (_model.ModelBaseClass.HasValue())
×
69
        {
70
            var modelBase = _model.ModelBaseClass.ToSafeName();
×
71
            using (CodeBuilder.Indent())
×
72
                CodeBuilder.AppendLine($": {modelBase}");
×
73
        }
74

75
        CodeBuilder.AppendLine("{");
×
76

77
        using (CodeBuilder.Indent())
×
78
        {
79
            GenerateProperties();
×
80
        }
×
81

82
        CodeBuilder.AppendLine("}");
×
83

84
    }
×
85

86

87
    private void GenerateProperties()
88
    {
89
        CodeBuilder.AppendLine("#region Generated Properties");
×
90
        foreach (var property in _model.Properties)
×
91
        {
92
            var propertyType = property.SystemType.ToType();
×
93
            var propertyName = property.PropertyName.ToSafeName();
×
94

95
            if (ShouldDocument())
×
96
            {
97
                CodeBuilder.AppendLine("/// <summary>");
×
98
                CodeBuilder.AppendLine($"/// Gets or sets the property value for '{property.PropertyName}'.");
×
99
                CodeBuilder.AppendLine("/// </summary>");
×
100
                CodeBuilder.AppendLine("/// <value>");
×
101
                CodeBuilder.AppendLine($"/// The property value for '{property.PropertyName}'.");
×
102
                CodeBuilder.AppendLine("/// </value>");
×
103
            }
104

105
            if (property.IsNullable == true && (property.SystemType.IsValueType || Options.Project.Nullable))
×
106
                CodeBuilder.AppendLine($"public {propertyType}? {propertyName} {{ get; set; }}");
×
107
            else if (Options.Project.Nullable && !property.SystemType.IsValueType)
×
108
                CodeBuilder.AppendLine($"public {propertyType} {propertyName} {{ get; set; }} = null!;");
×
109
            else
110
                CodeBuilder.AppendLine($"public {propertyType} {propertyName} {{ get; set; }}");
×
111

112
            CodeBuilder.AppendLine();
×
113
        }
114
        CodeBuilder.AppendLine("#endregion");
×
115
        CodeBuilder.AppendLine();
×
116
    }
×
117

118

119
    private bool ShouldDocument()
120
    {
121
        if (_model.ModelType == ModelType.Create)
×
122
            return Options.Model.Create.Document;
×
123

124
        if (_model.ModelType == ModelType.Update)
×
125
            return Options.Model.Update.Document;
×
126

127
        return Options.Model.Read.Document;
×
128
    }
129
}
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

© 2025 Coveralls, Inc