Beispiel #1
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            // List<string> <=> string conversion for sports
            modelBuilder
            .Entity <Event>()
            .Property(e => e.Sports)
            .HasConversion(
                v => string.Join(';', v),
                v => new List <string>(v.Split(';', StringSplitOptions.None)));

            // List<string> <=> string conversion for links
            modelBuilder
            .Entity <Event>()
            .Property(e => e.Links)
            .HasConversion(
                v => string.Join(';', v),
                v => new List <string>(v.Split(';', StringSplitOptions.None)));

            // List<string> <=> string conversion for images
            modelBuilder
            .Entity <Event>()
            .Property(e => e.Images)
            .HasConversion(
                v => string.Join(';', v),
                v => new List <string>(v.Split(';', StringSplitOptions.None)));

            // AddressInfo <=> string conversion
            modelBuilder
            .Entity <Event>()
            .Property(e => e.Address)
            .HasConversion(
                v => v.ToString(),
                v => AddressInfo.FromString(v));
        }
Beispiel #2
0
        public EventFull(DataList data)
        {
            Init();

            if (data == null)
            {
                return;
            }

            try
            {
                object idObj = data.Get("id");
                if (idObj != null)
                {
                    Id = (int)idObj;
                }

                // Basic conversions
                object nameObj = data.Get("name");
                if (nameObj != null)
                {
                    Name = (string)nameObj;
                }
                object authorObj = data.Get("author");
                if (authorObj != null)
                {
                    Author = (int)authorObj;
                }
                object coordinatesObj = data.Get("coordinates");
                if (coordinatesObj != null)
                {
                    object latitudeObj  = ((DataList)coordinatesObj).Get(0);
                    object longitudeObj = ((DataList)coordinatesObj).Get(1);
                    if (latitudeObj != null)
                    {
                        Latitude = (double)latitudeObj;
                    }
                    if (longitudeObj != null)
                    {
                        Longitude = (double)longitudeObj;
                    }
                }
                object addressObj = data.Get("address");
                if (addressObj != null)
                {
                    Address = AddressInfo.FromString((string)addressObj);
                }
                try
                {
                    object startDateObj = data.Get("start_date");
                    if (startDateObj != null)
                    {
                        StartDate = DateTime.ParseExact((string)startDateObj, "O", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
                    }
                }
                catch (FormatException)
                {
                    // TODO: log incident
                }
                object priceObj = data.Get("price");
                if (priceObj != null)
                {
                    Price = (decimal)priceObj;
                }
                object descriptionObj = data.Get("description");
                if (descriptionObj != null)
                {
                    Description = (string)descriptionObj;
                }
                object visibleObj = data.Get("visible");
                if (visibleObj != null)
                {
                    Visible = (bool)visibleObj;
                }

                // Complex conversions
                object sportsObj = data.Get("sports");
                if (sportsObj != null)
                {
                    foreach (ListItem sport in (DataList)sportsObj)
                    {
                        Sports.Add((string)sport.item);
                    }
                }
                object linksObj = data.Get("links");
                if (linksObj != null)
                {
                    foreach (ListItem link in (DataList)linksObj)
                    {
                        Links.Add((string)link.item);
                    }
                }
                object imagesObj = data.Get("images");
                if (imagesObj != null)
                {
                    foreach (ListItem image in (DataList)imagesObj)
                    {
                        Images.Add((string)image.item);
                    }
                }
                object tagsObj = data.Get("tags");
                if (tagsObj != null)
                {
                    Tags = ((string)tagsObj);
                }
            }
            catch (InvalidCastException)
            {
                // TODO: log incident
            }
        }