void InitHelpers() { _baseRefs = new BaseRefs(ModuleDefinition); _helper = new ModuleHelper(ModuleDefinition, _baseRefs); _anchor = new Anchor(ModuleDefinition, _helper, _baseRefs); _attribute = new AnchorAttribute(ModuleDefinition, _helper, _baseRefs); _tie = new Tie(ModuleDefinition, _helper, _baseRefs); }
void BuildAttributeEntity(TypeDefinition db, PropertyDefinition dbProperty, TypeDefinition anchorEntityType, PropertyDefinition prop) { var isHistorical = IsHistorical(prop); var anchorAttrSig = AnchorAttribute.GetName(isHistorical, dbProperty.Name, prop.Name); var anchorAttributeEntityType = _attribute.Create(db, anchorAttrSig, prop, isHistorical, anchorEntityType); ModuleDefinition.Types.Add(anchorAttributeEntityType); var anchAttrAttr = new CustomAttribute(_baseRefs.AttributeTypeAttributeRef); anchAttrAttr.ConstructorArguments.Add(new CustomAttributeArgument(_baseRefs.StringReference, anchorAttributeEntityType.Name)); prop.CustomAttributes.Add(anchAttrAttr); var entityAttrDbSetType = new GenericInstanceType(ModuleDefinition.ImportReference(typeof(DbSet <>))); entityAttrDbSetType.GenericArguments.Add(anchorAttributeEntityType); _helper.CreateProperty(db, entityAttrDbSetType, anchorAttrSig); LogMessage($"Make attribute: {anchorAttrSig}", MessageImportance.High); }