Beispiel #1
0
 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);
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 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);
 }