一般来说,我有一个类型,它里面有一个带有这种类型的字段:
/// <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,然后调用 special。获取 MReportsReportPeriodType 对象的类方法?
一般来说,我设置这样的映射:
EF能够消化它。