public static IEnumerable <Facet> InferSsdlFacetsForCsdlProperty(this EdmProperty csdlProperty, DbProviderManifest providerManifest) { var storeType = csdlProperty.GetStoreTypeUsage(providerManifest); Dictionary <string, Facet> storeFacetLookup = storeType.Facets.ToDictionary(f => f.Name, f => f); // Note that there are some facets that exist in the C-side but not in the store side (Collation/ConcurrencyMode) // Also the IsStrict facet can exist on the C-side but should not be used on the S-side despite the fact that e.g. SqlServer.geometry defines that facet return (csdlProperty.TypeUsage.Facets.Where( f => (storeFacetLookup.ContainsKey(f.Name) && storeFacetLookup[f.Name].Description.IsConstant == false && !"IsStrict".Equals(f.Name, StringComparison.Ordinal)))); }