コード例 #1
0
        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
            });
        }