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)); }
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 } }