public IRelationshipList Fetch(RelationshipMultiplicityType TypeToFetch) { var retListRaw = new List <IRelationship>(); if (TypeToFetch == RelationshipMultiplicityType.OneToMany) { retListRaw = this.Where(r => r.Type == "One to Many").ToList(); } else if (TypeToFetch == RelationshipMultiplicityType.ZeroOrOneToMany) { retListRaw = this.Where(r => ((r.Type == "One to Many") || (r.Type == "ZeroOrOne to Many"))).ToList(); } else if (TypeToFetch == RelationshipMultiplicityType.ManyToOne) { retListRaw = this.Where(r => r.Type == "Many to One").ToList(); } else if (TypeToFetch == RelationshipMultiplicityType.ManyToZeroOrOne) { retListRaw = this.Where(r => ((r.Type == "Many to ZeroOrOne") || (r.Type == "Many to One"))).ToList(); } else if (TypeToFetch == RelationshipMultiplicityType.OneToOne) { retListRaw = this.Where(r => (r.Type == "One to One")).ToList(); } else if (TypeToFetch == RelationshipMultiplicityType.OneToZeroOrOne) { retListRaw = this.Where(r => ((r.Type == "One to ZeroOrOne") || (r.Type == "One to One"))).ToList(); } else if (TypeToFetch == RelationshipMultiplicityType.ZeroOrOneToOne) { retListRaw = this.Where(r => ((r.Type == "ZeroOrOne to One") || (r.Type == "One to One"))).ToList(); } var retList = new RelationshipList(); if (retListRaw.Count > 0) { //this should sort equal field names before non equal field names, this will handle relationship with duplicate names correctly foreach (var item in retListRaw) { if (item.ToFieldName.Equals(item.FromFieldName)) { retList.Add(item); } } foreach (var item in retListRaw) { if (!item.ToFieldName.Equals(item.FromFieldName)) { retList.Add(item); } } } return(retList); }
public static bool BeginsAsMany(this RelationshipMultiplicityType multiplicityType) { switch (multiplicityType) { case RelationshipMultiplicityType.ManyToOne: return(true); case RelationshipMultiplicityType.ManyToZeroOrOne: return(true); } return(false); }
public static bool EndsAsMany(this RelationshipMultiplicityType multiplicityType) { switch (multiplicityType) { case RelationshipMultiplicityType.OneToMany: case RelationshipMultiplicityType.ZeroOrOneToMany: return(true); /* * case RelationshipMultiplicityType.ManyToOne * case RelationshipMultiplicityType.ManyToZeroOrOne * case RelationshipMultiplicityType.OneToOne * case RelationshipMultiplicityType.OneToZeroOrOne * case RelationshipMultiplicityType.ZeroOrOneToOne */ } return(false); }
public static bool EndsAsZeroOrOne(this RelationshipMultiplicityType multiplicityType) { switch (multiplicityType) { case RelationshipMultiplicityType.OneToMany: return(false); case RelationshipMultiplicityType.ZeroOrOneToMany: return(false); case RelationshipMultiplicityType.ManyToOne: return(true); case RelationshipMultiplicityType.ManyToZeroOrOne: return(true); case RelationshipMultiplicityType.OneToOne: return(true); case RelationshipMultiplicityType.OneToZeroOrOne: return(true); case RelationshipMultiplicityType.Unknown: return(false); case RelationshipMultiplicityType.ZeroOrOneToOne: return(true); } return(false); }
public static string AsString(this RelationshipMultiplicityType multiplicityType) { switch (multiplicityType) { case RelationshipMultiplicityType.ManyToOne: return("*->1"); case RelationshipMultiplicityType.ManyToZeroOrOne: return("*->0|1"); case RelationshipMultiplicityType.OneToMany: return("1->*"); case RelationshipMultiplicityType.OneToOne: return("1->1"); case RelationshipMultiplicityType.OneToZeroOrOne: return("1->0|1"); case RelationshipMultiplicityType.Unknown: return("??"); case RelationshipMultiplicityType.ZeroOrOneToMany: return("0|1->*"); case RelationshipMultiplicityType.ZeroOrOneToOne: return("0|1->1"); } return("??!"); }