EF:使用类型映射实体框架层次结构

本文关键字:实体 框架 层次结构 映射 类型 EF | 更新日期: 2023-09-27 17:50:00

我一直得到这个错误消息:

异常详细信息:MySql.Data.MySqlClient.MySqlException: Unknown column 'Extent1. '规则类型'在'字段列表'

我的映射:

public abstract class AlertRule
{
    private DateTime? _updateDateTime = DateTime.Now;
    [Key]
    public int Id { get; set; }
    public int TemplateId { get; set; }
    public virtual AlertRuleTemplate Template { get; set; }
    public string RuleType
    {
        get
        {
            if (Template == null)
                return null;
            return Template.Name;
        }
    }
}
public class AlertOutageRule:AlertRule
{
    public virtual List<AlertRuleOutage> AlertRuleOutages { get; set; }
}
public class AlertMissingRule:AlertRule{}
public class AlertMetadataRule:AlertRule{}

        public DbSet<AlertRule> AlertRules { get; set; }

        modelBuilder.Entity<AlertRule>()
            .Map<AlertOutageRule>(m => m.Requires("RuleType").HasValue("NewsOutage"))
            .Map<AlertMetadataRule>(m => m.Requires("RuleType").HasValue("NewsMetadata"))
            .Map<AlertMissingRule>(m => m.Requires("RuleType").HasValue("NewsMissing"));
            //.Property(m => m.TemplateId).HasColumnType("int");
        modelBuilder.Entity<AlertRule>().ToTable("AlertRule");

EF:使用类型映射实体框架层次结构

public string RuleType定义为只读(没有set{..})。

EF不会将此属性映射到数据库。查看您的DB模式,它将只生成2列(Id, TemplateId)