Extensiones muy interesantes si usas ExpandoObject

 

Si necesitas convertir tu clase en un ExpandoObject…

public static class ObjectExtensions
    {
        /// <summary>
        /// Turns the object into an ExpandoObject
        /// </summary>
        public static dynamic ToExpando(this object o)
        {
            var result = new ExpandoObject();
            var d = result as IDictionary<string, object>; //work with the Expando as a Dictionary
            if (o.GetType() == typeof(ExpandoObject)) return o; //shouldn’t have to… but just in case
            if (o.GetType() == typeof(NameValueCollection) || o.GetType().IsSubclassOf(typeof(NameValueCollection)))
            {
                var nv = (NameValueCollection)o;
                nv.Cast<string>().Select(key => new KeyValuePair<string, object>(key, nv[key])).ToList().ForEach(i => d.Add(i));
            }
            else
            {
                var props = o.GetType().GetProperties();
                foreach (var item in props)
                {
                    d.Add(item.Name, item.GetValue(o, null));
                }
            }
            return result;
        }
        /// <summary>
        /// Turns the object into a Dictionary
        /// </summary>
        public static IDictionary<string, object> ToDictionary(this object thingy)
        {
            return (IDictionary<string, object>)thingy.ToExpando();
        }

       
    }

[Flags] Serializar un Enum de la clase.

Al serializar …

XmlSerializer xs = new XmlSerializer(typeof(List<T>));
               
                using (StreamWriter writer = new StreamWriter(file))
                {
                    xs.Serialize(writer, listToSave);
                }

 

nos podemos encontrar con que rompe con el Enum, por ejemplo:

       public enum EnumEspacialidades {
             Ninguna = 0,
             SeguridadLaboral = 2,
            HigieneIndustrial = 4,
             Ergonomia = 8,
              Formacion = 16
       };

Para solucionarlo:

[Flags]
       public enum EnumEspacialidades {
       [XmlEnum(Name = “Ninguna”)]
       Ninguna = 0,
       [XmlEnum(Name = “SeguridadLaboral”)]
       SeguridadLaboral = 2,
       [XmlEnum(Name = “HigieneIndustrial”)]
       HigieneIndustrial = 4,
       [XmlEnum(Name = “Ergonomia”)]
       Ergonomia = 8,
       [XmlEnum(Name = “Formacion”)]
       Formacion = 16
       };

 

Bien!

Crystal Reports 2010 para VS 2010

Rompe, rompe, rompe, rompe… voy a desinstalar y volver  a instalar… de momento la impresión es que está aún verde…

Hay varios instaladores, unos van y otros no… he tenido que probar con varios hasta conseguir abrir un rpt…

Seguro que es un problema de instalación y falta de pruebas en distintos entornos por parte de SAP…

En fin… crucemos los dedos..y a ver si tras desinstalar/instalar, ccleaner y reiniciar… logro que no me rompa mi VS2010 cuando intento crear un rpt…

Dedos cruzados

Bueno, pues no ha habido suerte… increible!!.. nueva versión que no me permite ni crear un rpt nuevo. UN –10 para SAP.

Probaré con una VM de 32 bits y una configuración normalita, esperando que ésta la hayan probado un poquito más los testers de SAP.

Tanto esperar para esto!

=====================

La versión de 32bits no da problemas! menos mal!!!

Could not load file or assembly ‘file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win64_x64\dotnet1\crdb_adoplus.dll’ or one of its dependencies. The system cannot find the file specified.

 

Problemas con VS 2010, framework 4 y Crystal Reports 2010. Ojalá todos fueran como éste.

Puedes solucionarlo añadiendo al app.config de tu proyecto de inicio:

<startup useLegacyV2RuntimeActivationPolicy=”true”>

        <supportedRuntime version=”v4.0″/>

</startup>

http://www.spyriadis.net/tag/net-framework/

A por el próximo!

Exportar DB a SQL Azure

A la hora de exportar desde SQL Server a Azure, hay varias posibilidades, pero la más sencilla es ir a la base de datos que queremos exportar, botón derecho, “Task\Generate Scripts…”

Ahí vamos siguiendo el asistente y cuando llegamos a “Set Scripting Options” pinchamos en el botón “Advanced”.

image

Y en la nueva ventana seleccionamos el destino: SQL Azure Database

image

Y ya con ese script, creamos la  BD (con o sin datos) en SQL Azure… ¡¡sencillito e ideal!!!