Erweiterung der Übersetzungen

"1582c2b1-cef2-4d56-bb3d-1bdcf8aa9de6";"Responsible";"Responsible";"";"";"";"False";"0"
"507E00CC-9520-4095-8528-17FF9DBE22CB";"Engine Part";"Engine Part";"";"";"";"False";"0"

Erweiterung EnumRelationType

namespace BA.Training.Enums.Extensions
{
    [EnumExtension(typeof(EnumRelationType))]
    public static class EnumRelationTypeExtension
    {
        public const string ResponsibleGuid = "495F5CC6-8C75-4B55-A600-531BC49FE416";
        public static readonly EnumRelationType Responsible = new EnumRelationType(ResponsibleGuid, 1000, "1582C2B1-CEF2-4D56-BB3D-1BDCF8AA9DE6", nameof(Responsible));
    }
}

Erweiterung EnumParentRelationSubtypes

namespace BA.Training.Enums.Extensions
{
    [EnumExtension(typeof(EnumParentRelationSubtypes))]
    public class EnumParentRelationSubtypesExtension
    {
        public const string EnginePartGuid = "7FAFF96A-2A30-49E7-8BC7-75BB70731858";
        public static readonly EnumParentRelationSubtypes EnginePart = new EnumParentRelationSubtypes(EnginePartGuid, 1000, "507E00CC-9520-4095-8528-17FF9DBE22CB", nameof(EnginePart));
    }
}

Erstellung des Relationtyps

namespace BA.Training
{
    public class RelationCreation : IRelationCreation
    {
        public void CreateRelationConfigurations(KeyedDictionary<Guid, RelationTypeConfiguration> relationConfigurations)
        {
            relationConfigurations.Add(ResponsibleRelation());
        }

        private RelationTypeConfiguration ResponsibleRelation()
        {
            RelationTypeConfiguration relationConfiguration = new RelationTypeConfiguration()
            {
                Id = EnumRelationTypeExtension.Responsible,
                Type = EnumRelationCardinality.SomethingToAnythingGuid,
            };

            relationConfiguration.Initialize();

            relationConfiguration.SourceTypes.Add(EnumDataSource.UserProfileGuid);
            relationConfiguration.ConfigurationName = "Responsible";
            relationConfiguration.Description = "Responsible relation";
            relationConfiguration.ShowInDesigner = true;

            return relationConfiguration;
        }
    }
}

Erweiterung OrmEngine

[Newtonsoft.Json.JsonIgnore]
[DontShowFieldInDesigner]
[RelationDefinitionTarget("67D7204E-EE21-4926-B2F7-A9E82A5B8552", EnumRelationTypeExtension.ResponsibleGuid, MinCount = 0, MaxCount = 1)]
public OrmUserProfile RelatedResponsible
{
    get
    {
        return GetSourcePrimary<OrmUserProfile>(EnumRelationTypeExtension.Responsible);
    }
}

[Newtonsoft.Json.JsonIgnore]
[DontShowFieldInDesigner]
[RelationDefinitionTarget("00016884-8F07-40A0-BB20-A15C623C197C", EnumRelationType.ParentGuid, EnumParentRelationSubtypesExtension.EnginePartGuid, MinCount = 0, MaxCount = 0)]
public IQueryable<OrmEngine> RelatedMainEngines
{
    get
    {
        return GetSources<OrmEngine>(EnumRelationType.Parent, EnumParentRelationSubtypesExtension.EnginePartGuid);
    }
}

[Newtonsoft.Json.JsonIgnore]
[DontShowFieldInDesigner]
[RelationDefinitionSource("00016884-8F07-40A0-BB20-A15C623C197C")]
public IQueryable<OrmEngine> RelatedEngineParts
{
    get
    {
        return GetTargets<OrmEngine>(EnumRelationType.Parent, EnumParentRelationSubtypesExtension.EnginePartGuid);
    }
}

Inject der Relationsdefinition

[assembly: RelationDefinitionSourceInject(typeof(OrmUserProfile), "RelatedResponsibleOfEngines", "67D7204E-EE21-4926-B2F7-A9E82A5B8552")]