public virtual ConventionNavigationPropertyConfiguration HasInverseNavigationProperty( Func <PropertyInfo, PropertyInfo> inverseNavigationPropertyGetter) { Check.NotNull <Func <PropertyInfo, PropertyInfo> >(inverseNavigationPropertyGetter, nameof(inverseNavigationPropertyGetter)); if (this._configuration != null && this._configuration.InverseNavigationProperty == (PropertyInfo)null) { PropertyInfo propertyInfo = inverseNavigationPropertyGetter(this.ClrPropertyInfo); Check.NotNull <PropertyInfo>(propertyInfo, "inverseNavigationProperty"); if (!propertyInfo.IsValidEdmNavigationProperty()) { throw new InvalidOperationException(Strings.LightweightEntityConfiguration_InvalidNavigationProperty((object)propertyInfo.Name)); } if (!propertyInfo.DeclaringType.IsAssignableFrom(this._configuration.NavigationProperty.PropertyType.GetTargetType())) { throw new InvalidOperationException(Strings.LightweightEntityConfiguration_MismatchedInverseNavigationProperty((object)this._configuration.NavigationProperty.PropertyType.GetTargetType().FullName, (object)this._configuration.NavigationProperty.Name, (object)propertyInfo.DeclaringType.FullName, (object)propertyInfo.Name)); } if (!this._configuration.NavigationProperty.DeclaringType.IsAssignableFrom(propertyInfo.PropertyType.GetTargetType())) { throw new InvalidOperationException(Strings.LightweightEntityConfiguration_InvalidInverseNavigationProperty((object)this._configuration.NavigationProperty.DeclaringType.FullName, (object)this._configuration.NavigationProperty.Name, (object)propertyInfo.PropertyType.GetTargetType().FullName, (object)propertyInfo.Name)); } if (this._configuration.InverseEndKind.HasValue) { ConventionNavigationPropertyConfiguration.VerifyMultiplicityCompatibility(this._configuration.InverseEndKind.Value, propertyInfo); } this._modelConfiguration.Entity(this._configuration.NavigationProperty.PropertyType.GetTargetType()).Navigation(propertyInfo); this._configuration.InverseNavigationProperty = propertyInfo; } return(this); }
public virtual ConventionNavigationPropertyConfiguration HasRelationshipMultiplicity( RelationshipMultiplicity multiplicity) { if (this._configuration != null && !this._configuration.RelationshipMultiplicity.HasValue) { ConventionNavigationPropertyConfiguration.VerifyMultiplicityCompatibility(multiplicity, this._configuration.NavigationProperty); this._configuration.RelationshipMultiplicity = new RelationshipMultiplicity?(multiplicity); } return(this); }
public virtual ConventionNavigationPropertyConfiguration HasInverseEndMultiplicity( RelationshipMultiplicity multiplicity) { if (this._configuration != null && !this._configuration.InverseEndKind.HasValue) { if (this._configuration.InverseNavigationProperty != (PropertyInfo)null) { ConventionNavigationPropertyConfiguration.VerifyMultiplicityCompatibility(multiplicity, this._configuration.InverseNavigationProperty); } this._configuration.InverseEndKind = new RelationshipMultiplicity?(multiplicity); } return(this); }