private static void ApplyPropertyConventions(PropertyConfiguration property, IStructuralTypeConfiguration edmTypeConfiguration) { foreach (IConvention convention in _conventions) { PrimitivePropertyConfiguration primitivePropertyConfiguration; ComplexPropertyConfiguration complexPropertyConfiguration; NavigationPropertyConfiguration navigationPropertyConfiguration; if ((primitivePropertyConfiguration = property as PrimitivePropertyConfiguration) != null) { IEdmPropertyConvention <PrimitivePropertyConfiguration> propertyConfigurationConvention = convention as IEdmPropertyConvention <PrimitivePropertyConfiguration>; if (propertyConfigurationConvention != null) { ApplyPropertyConvention(primitivePropertyConfiguration, edmTypeConfiguration, propertyConfigurationConvention); } } else if ((complexPropertyConfiguration = property as ComplexPropertyConfiguration) != null) { IEdmPropertyConvention <ComplexPropertyConfiguration> propertyConfigurationConvention = convention as IEdmPropertyConvention <ComplexPropertyConfiguration>; if (propertyConfigurationConvention != null) { ApplyPropertyConvention(complexPropertyConfiguration, edmTypeConfiguration, propertyConfigurationConvention); } } else if ((navigationPropertyConfiguration = property as NavigationPropertyConfiguration) != null) { IEdmPropertyConvention <NavigationPropertyConfiguration> propertyConfigurationConvention = convention as IEdmPropertyConvention <NavigationPropertyConfiguration>; if (propertyConfigurationConvention != null) { ApplyPropertyConvention(navigationPropertyConfiguration, edmTypeConfiguration, propertyConfigurationConvention); } } } }
// remove base type properties from the derived types. internal void RemoveBaseTypeProperties(EntityTypeConfiguration derivedEntity, EntityTypeConfiguration baseEntity) { IEnumerable <EntityTypeConfiguration> typesToLift = new[] { derivedEntity }.Concat(this.DerivedTypes(derivedEntity)); foreach (PropertyConfiguration property in baseEntity.Properties.Concat(baseEntity.DerivedProperties())) { foreach (EntityTypeConfiguration entity in typesToLift) { PropertyConfiguration derivedPropertyToRemove = entity.Properties.Where(p => p.Name == property.Name).SingleOrDefault(); if (derivedPropertyToRemove != null) { entity.RemoveProperty(derivedPropertyToRemove.PropertyInfo); } } } foreach (PropertyInfo ignoredProperty in baseEntity.IgnoredProperties()) { foreach (EntityTypeConfiguration entity in typesToLift) { PropertyConfiguration derivedPropertyToRemove = entity.Properties.Where(p => p.Name == ignoredProperty.Name).SingleOrDefault(); if (derivedPropertyToRemove != null) { entity.RemoveProperty(derivedPropertyToRemove.PropertyInfo); } } } }
/// <summary> /// Initializes a new instance of the <see cref="QueryableRestrictions"/> class. /// </summary> /// <param name="propertyConfiguration">The PropertyConfiguration containing queryable restrictions.</param> public QueryableRestrictions(PropertyConfiguration propertyConfiguration) { NonFilterable = propertyConfiguration.NonFilterable; Unsortable = propertyConfiguration.Unsortable; NotNavigable = propertyConfiguration.NotNavigable; NotExpandable = propertyConfiguration.NotExpandable; }
public void HasRequired_CanSetSingleForeignKeyProperty_ForReferentialConstraint() { // Arrange PropertyInfo expectPrincipalPropertyInfo = typeof(User).GetProperty("UserId"); PropertyInfo expectDependentPropertyInfo = typeof(Role).GetProperty("UserForeignKey"); ODataModelBuilder builder = new ODataModelBuilder(); // Act NavigationPropertyConfiguration navigationProperty = builder.Entity <Role>().HasRequired(r => r.User, (r, u) => r.UserForeignKey == u.UserId); // Assert PropertyInfo actualDependentPropertyInfo = Assert.Single(navigationProperty.DependentProperties); Assert.Same(expectDependentPropertyInfo, actualDependentPropertyInfo); PropertyInfo actualPrincipalPropertyInfo = Assert.Single(navigationProperty.PrincipalProperties); Assert.Same(expectPrincipalPropertyInfo, actualPrincipalPropertyInfo); PropertyConfiguration propertyConfiguration = Assert.Single(navigationProperty.DeclaringEntityType.Properties .Where(e => e.PropertyInfo == actualDependentPropertyInfo)); PrimitivePropertyConfiguration primitiveProperty = Assert.IsType <PrimitivePropertyConfiguration>(propertyConfiguration); Assert.False(primitiveProperty.OptionalProperty); }
private void ValidatePropertyNotAlreadyDefinedInBaseTypes(PropertyInfo propertyInfo) { PropertyConfiguration baseProperty = this.DerivedProperties().Where(p => p.Name == propertyInfo.Name).FirstOrDefault(); if (baseProperty != null) { throw Error.InvalidOperation(SRResources.CannotRedefineBaseTypeProperty, propertyInfo.Name, baseProperty.PropertyInfo.ReflectedType.FullName); } }
private void ValidatePropertyNotAlreadyDefinedInDerivedTypes(PropertyInfo propertyInfo) { foreach (IEntityTypeConfiguration derivedEntity in ModelBuilder.DerivedTypes(this)) { PropertyConfiguration propertyInDerivedType = derivedEntity.Properties.Where(p => p.Name == propertyInfo.Name).FirstOrDefault(); if (propertyInDerivedType != null) { throw Error.InvalidOperation(SRResources.PropertyAlreadyDefinedInDerivedType, propertyInfo.Name, FullName, derivedEntity.FullName); } } }
public PropertyConfigurationTest() { Mock<PropertyInfo> mockPropertyInfo = new Mock<PropertyInfo>(); _propertyInfo = mockPropertyInfo.Object; Mock<StructuralTypeConfiguration> mockTypeConfig = new Mock<StructuralTypeConfiguration>(); _declaringType = mockTypeConfig.Object; Mock<PropertyConfiguration> mockConfiguration = new Mock<PropertyConfiguration>(_propertyInfo, _declaringType) { CallBase = true }; mockConfiguration.Object.Name = "Name"; _configuration = mockConfiguration.Object; }