private void ProcessOneToManyListMember(EntityMemberInfo member) { var listInfo = member.ChildListInfo = new ChildEntityListInfo(member); listInfo.RelationType = EntityRelationType.ManyToOne; var entType = member.Entity.EntityType; var targetType = member.DataType.GetGenericArguments()[0]; listInfo.TargetEntity = this.Model.GetEntityInfo(targetType, true); var oneToManyAttr = member.Attributes.OfType <OneToManyAttribute>().FirstOrDefault(); var thisEntRefName = oneToManyAttr?.ThisEntityRef; if (!string.IsNullOrEmpty(thisEntRefName)) { var fkMember = listInfo.TargetEntity.GetMember(thisEntRefName); if (fkMember == null) { this.Log.Error("Entity list member {0}: could not find property '{1}' in target entity. ", member.ToString(), thisEntRefName); return; } oneToManyAttr.ThisEntityRef = fkMember.MemberName; listInfo.ParentRefMember = fkMember; } else { // no explicit attr listInfo.ParentRefMember = listInfo.TargetEntity.FindEntityRefMember(null, entType, member, this.Log); } //Check that reference is found if (listInfo.ParentRefMember == null) { this.Log.Error("EntityList member {0}: could not find reference property in target entity. ", member.ToString()); } else { //Set back reference to list from ref member listInfo.ParentRefMember.ReferenceInfo.TargetListMember = member; } //Filter - not implemented in .NET core version /* * if(oneToManyAttr != null && !string.IsNullOrWhiteSpace(oneToManyAttr.Filter)) * listInfo.Filter = ParseFilter(oneToManyAttr.Filter, listInfo.TargetEntity, this.Log); */ } //method