I’ve modified a table shown below
ALTER TABLE [Plant]
ADD
Name nvarchar(128) NULL,
GLN nvarchar(15) NULL,
LicenceInformation nvarchar(1024) NULL,
MondayStart smallint NULL,
MondayEnd smallint NULL,
TuesdayStart smallint NULL,
TuesdayEnd smallint NULL,
WednesdayStart smallint NULL,
WednesdayEnd smallint NULL,
ThursdayStart smallint NULL,
ThursdayEnd smallint NULL,
FridayStart smallint NULL,
FridayEnd smallint NULL,
SaturdayStart smallint NULL,
SaturdayEnd smallint NULL,
SundayStart smallint NULL,
SundayEnd smallint NULL
Which I’d like to map to something like:
public class Plant : ProjectAggregateRootEntity<int>
{
public virtual string Code { get; set; }
public virtual string Name { get; set; }
public virtual string Gln { get; set; }
public virtual string LicenceInformation { get; set; }
public virtual IDictionary<DayOfWeek, PlantOpeningHours> OpeningHours
{
get; set;
}
}
public class PlantOpeningHours
{
public virtual DayOfWeek Day { get; set; }
public virtual int StartMinutes { get; set; }
public virtual int DurationMinutes { get; set; }
}
So I can enumerate the opening hours per day or reference one specifically like: plant.OpeningHours[DayOfWeek.Monday]
So it’s sort of like a component mapping… but not quite.
Cache.ReadWrite().Region("ReferenceData");
Table("Plant");
Map(x => x.Code);
Map(x => x.Name);
Map(x => x.Gln);
Map(x => x.LicenceInformation);
Component(x => x.OpeningHours, x =>
{
//??
});
You need to create your own UserType for this:
When you map it, you will need to specify the columns in order: