Exemple #1
0
        /// <summary>
        ///     ComplexTypeColumnMap
        /// </summary>
        /// <param name="columnMap"> </param>
        /// <param name="replacementVarMap"> </param>
        /// <returns> </returns>
        internal override ColumnMap Visit(ComplexTypeColumnMap columnMap, VarMap replacementVarMap)
        {
            var newNullability = columnMap.NullSentinel;

            if (null != newNullability)
            {
                newNullability = (SimpleColumnMap)newNullability.Accept(this, replacementVarMap);
            }
            var fieldList = VisitList(columnMap.Properties, replacementVarMap);

            return(new ComplexTypeColumnMap(columnMap.Type, columnMap.Name, fieldList, newNullability));
        }
 internal override void Visit(ComplexTypeColumnMap columnMap, Dump dumper)
 {
     using (new Dump.AutoXml(dumper, "ComplexType", Dump.ColumnMapDumper.GetAttributes((ColumnMap)columnMap)))
     {
         if (columnMap.NullSentinel != null)
         {
             using (new Dump.AutoXml(dumper, "nullSentinel"))
                 columnMap.NullSentinel.Accept <Dump>((ColumnMapVisitor <Dump>) this, dumper);
         }
         this.VisitList <ColumnMap>(columnMap.Properties, dumper);
     }
 }
Exemple #3
0
        internal override ColumnMap Visit(
            ComplexTypeColumnMap columnMap,
            VarMap replacementVarMap)
        {
            SimpleColumnMap nullSentinel = columnMap.NullSentinel;

            if (nullSentinel != null)
            {
                nullSentinel = (SimpleColumnMap)nullSentinel.Accept <ColumnMap, VarMap>((ColumnMapVisitorWithResults <ColumnMap, VarMap>) this, replacementVarMap);
            }
            ColumnMap[] properties = this.VisitList <ColumnMap>(columnMap.Properties, replacementVarMap);
            return((ColumnMap) new ComplexTypeColumnMap(columnMap.Type, columnMap.Name, properties, nullSentinel));
        }
Exemple #4
0
 /// <summary>
 ///     ComplexTypeColumnMap
 /// </summary>
 internal override void Visit(ComplexTypeColumnMap columnMap, Dump dumper)
 {
     using (new AutoXml(dumper, "ComplexType", GetAttributes(columnMap)))
     {
         if (columnMap.NullSentinel != null)
         {
             using (new AutoXml(dumper, "nullSentinel"))
             {
                 columnMap.NullSentinel.Accept(this, dumper);
             }
         }
         VisitList(columnMap.Properties, dumper);
     }
 }
Exemple #5
0
        // <summary>
        // Build the collectionColumnMap from a store datareader, a type and an entitySet.
        // </summary>
        internal virtual CollectionColumnMap CreateColumnMapFromReaderAndType(
            DbDataReader storeDataReader, EdmType edmType, EntitySet entitySet,
            Dictionary <string, FunctionImportReturnTypeStructuralTypeColumnRenameMapping> renameList)
        {
            Debug.Assert(
                Helper.IsEntityType(edmType) || null == entitySet,
                "The specified non-null EntitySet is incompatible with the EDM type specified.");

            // Next, build the ColumnMap directly from the edmType and entitySet provided.
            var       propertyColumnMaps = GetColumnMapsForType(storeDataReader, edmType, renameList);
            ColumnMap elementColumnMap   = null;

            // NOTE: We don't have a null sentinel here, because the stored proc won't
            //       return one anyway; we'll just presume the data's always there.
            if (Helper.IsRowType(edmType))
            {
                elementColumnMap = new RecordColumnMap(TypeUsage.Create(edmType), edmType.Name, propertyColumnMaps, null);
            }
            else if (Helper.IsComplexType(edmType))
            {
                elementColumnMap = new ComplexTypeColumnMap(TypeUsage.Create(edmType), edmType.Name, propertyColumnMaps, null);
            }
            else if (Helper.IsScalarType(edmType))
            {
                if (storeDataReader.FieldCount != 1)
                {
                    throw new EntityCommandExecutionException(Strings.ADP_InvalidDataReaderFieldCountForScalarType);
                }
                elementColumnMap = new ScalarColumnMap(TypeUsage.Create(edmType), edmType.Name, 0, 0);
            }
            else if (Helper.IsEntityType(edmType))
            {
                elementColumnMap = CreateEntityTypeElementColumnMap(
                    storeDataReader, edmType, entitySet, propertyColumnMaps, null /*renameList*/);
            }
            else
            {
                Debug.Assert(false, "unexpected edmType?");
            }
            CollectionColumnMap collection = new SimpleCollectionColumnMap(
                edmType.GetCollectionType().TypeUsage, edmType.Name, elementColumnMap, null, null);

            return(collection);
        }