/// <summary> /// Gets the foreign key for the given properties that points to a given primary or alternate key. Returns null /// if no foreign key is found. /// </summary> /// <param name="entityType"> The entity type to find the foreign keys on. </param> /// <param name="property"> The property that the foreign key is defined on. </param> /// <param name="principalKey"> The primary or alternate key that is referenced. </param> /// <param name="principalEntityType"> /// The entity type that the relationship targets. This may be different from the type that <paramref name="principalKey" /> /// is defined on when the relationship targets a derived type in an inheritance hierarchy (since the key is defined on the /// base type of the hierarchy). /// </param> /// <returns> The foreign key, or null if none is defined. </returns> public static IForeignKey FindForeignKey( [NotNull] this IEntityType entityType, [NotNull] IProperty property, [NotNull] IKey principalKey, [NotNull] IEntityType principalEntityType) { Check.NotNull(entityType, nameof(entityType)); return(entityType.FindForeignKey(new[] { property }, principalKey, principalEntityType)); }
public static IForeignKey GetForeignKey([NotNull] this IEntityType entityType, [NotNull] IReadOnlyList <IProperty> properties) { var foreignKey = entityType.FindForeignKey(properties); if (foreignKey == null) { throw new ModelItemNotFoundException(Strings.ForeignKeyNotFound(Property.Format(properties), entityType.Name)); } return(foreignKey); }