public IConfiguration Discover(EdmProperty property, DbModel model) { Debug.Assert(property != null, "property is null."); Debug.Assert(model != null, "model is null."); var columnProperty = model.GetColumn(property); string name = null; if (_code.Property(property) != columnProperty.Name) { name = columnProperty.Name; } var providerManifest = model.GetProviderManifest(_dependencyResolver); var defaultTypeName = providerManifest.GetStoreType(property.TypeUsage) .EdmType.Name; string typeName = null; if (!columnProperty.TypeName.EqualsIgnoreCase(defaultTypeName)) { typeName = columnProperty.TypeName; } var entityType = (EntityType)property.DeclaringType; var keyIndex = entityType.KeyMembers.IndexOf(property); int?order = null; if (keyIndex != -1 && entityType.KeyMembers.Count > 1) { order = keyIndex; } if (name == null && typeName == null && order == null) { // By convention return(null); } return(new ColumnConfiguration { Name = name, TypeName = typeName, Order = order }); }