Статические константы

В общем, у меня есть тип, который внутри себя имеет поле с таким типом:

/// <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 смог это переварить.

→ Ссылка