Статические константы
В общем, у меня есть тип, который внутри себя имеет поле с таким типом:
/// <summary>
/// Период отчёта
/// </summary>
public class MReportsReportPeriodType : EnumBase
{
/// <summary>
/// Ежедневный
/// </summary>
public static MReportsReportPeriodType Daily { get; } = new MReportsReportPeriodType(0, nameof(Daily), "Ежедневный");
/// <summary>
/// Еженедельный
/// </summary>
public static MReportsReportPeriodType Weekly { get; } = new MReportsReportPeriodType(1, nameof(Weekly), "Еженедельный");
private MReportsReportPeriodType(int id, string name, string description) : base(id, name, description)
{
}
}
В базе эта штука хранится с типом int и не как отдельная сущность.
Вопрос: Я как-нибудь могу настроить маппинги в EF 2.0, что бы оно нормально работало в оба направления?
По идее, с маппить я могу вот так:
var own=builder.OwnsOne(x => x.ReportType);
own.Ignore(x => x.Name);
own.Ignore(x => x.Description);
own.Property(x => x.Id).HasColumnName("ReportType");
Это будет работать при вставке и обновлении, но при чтении данных из БД буду падать... Как мне сказать EF, что нужно взять INT из базы, а потом вызвать спец. метод класса, что бы получить объект MReportsReportPeriodType ?
Ответы (1 шт):
Автор решения: iluxa1810
→ Ссылка
В общем, вот так настроил маппинги:
builder.Property(x => x.StructCategory).HasColumnName("StructCategory");
builder.Property(x => x.StructCategory).HasConversion(x => x.Id, id => MReport.Domain.Models.Enums.EnumBase.GetById<MReportsEmployeeStructCategory>(id));
И EF смог это переварить.