private CodeConstructor GetAnonymousTypeConstructor(CodeTypeDeclaration type)
        {
            var data = CodeWriterFilterService.EntityMetadata[type.GetFieldInitalizedValue("EntityLogicalName")];
            var constructor = new CodeConstructor
            {
                Attributes = System.CodeDom.MemberAttributes.Public,
                Name = type.Name
            };

            constructor.Comments.AddRange(new[] {
					new CodeCommentStatement(@"<summary>", true),
					new CodeCommentStatement(@"Constructor for populating via LINQ queries given a LINQ anonymous type", true),
					new CodeCommentStatement(@"<param name=""anonymousType"">LINQ anonymous type.</param>",true),
					new CodeCommentStatement(@"</summary>", true)});


            constructor.Parameters.Add(new CodeParameterDeclarationExpression(typeof (Object), "anonymousType"));
            constructor.ChainedConstructorArgs.Add(new CodeSnippetExpression(""));
            const string indent = "            ";
            // Rather than attempt to do this all through CodeDom, hard code this as C#
            constructor.Statements.Add(new CodeSnippetStatement(string.Format(indent +
            "foreach (var p in anonymousType.GetType().GetProperties()){0}" +
            "{{{0}" +
            "    var value = p.GetValue(anonymousType, null);{0}" +
            "    var name = p.Name.ToLower();{0}{0}" +
            "    if (name.EndsWith(\"enum\") && value.GetType().BaseType == typeof(System.Enum)){0}" +
            "    {{{0}" +
            "        value = new Microsoft.Xrm.Sdk.OptionSetValue((int) value);{0}" +
            "        name = name.Remove(name.Length - \"enum\".Length);{0}" +
            "    }}{0}{0}" +
            "    switch (name){0}" +
            "    {{{0}" +
            "        case \"id\":{0}" +
            "            base.Id = (System.Guid)value;{0}" +
            "            Attributes[\"{1}\"] = base.Id;{0}" +
            "            break;{0}" +
            "        case \"{1}\":{0}" +
            "            var id = (System.Nullable<System.Guid>) value;{0}" +
            "            if(id == null){{ continue; }}{0}" +
            "            base.Id = id.Value;{0}" +
            "            Attributes[name] = base.Id;{0}" +
            "            break;{0}" +
            "        case \"formattedvalues\":{0}" +
            "            // Add Support for FormattedValues{0}" +
            "            FormattedValues.AddRange((Microsoft.Xrm.Sdk.FormattedValueCollection)value);{0}" +
            "            break;{0}" +
            "        default:{0}" +
            "            Attributes[name] = value;{0}" +
            "            break;{0}" +
            "    }}{0}" +
            "}}", Environment.NewLine + indent, data.PrimaryIdAttribute)));

            return constructor;
        }