EF: gebruik van typedomein-kaderhiërarchie van typiden

ik krijg steeds deze foutmelding:

Uitzonderingsdetails: MySql.Data.MySqlClient.MySqlException: onbekende kolom 'Extent1.RuleType' in 'field list'

mijn mapping:

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 AlertRuleOutages { get; set; }
}
public class AlertMissingRule:AlertRule{}
public class AlertMetadataRule:AlertRule{}

        public DbSet AlertRules { get; set; }

        modelBuilder.Entity()
            .Map(m => m.Requires("RuleType").HasValue("NewsOutage"))
            .Map(m => m.Requires("RuleType").HasValue("NewsMetadata"))
            .Map(m => m.Requires("RuleType").HasValue("NewsMissing"));
            //.Property(m => m.TemplateId).HasColumnType("int");

        modelBuilder.Entity().ToTable("AlertRule");
2
ja ru de
RuleType heeft geen setter, dus u kunt het niet toewijzen aan een persistente databasekolom, die nodig is om ervoor te zorgen dat EF het juiste type opnieuw materialiseert wanneer u objecten ophaalt.
toegevoegd de auteur Morten Mertner, de bron
RuleType heeft geen setter, dus u kunt het niet toewijzen aan een persistente databasekolom, die nodig is om ervoor te zorgen dat EF het juiste type opnieuw materialiseert wanneer u objecten ophaalt.
toegevoegd de auteur Morten Mertner, de bron
Ja; u moet de setter (en dus de kolom) toevoegen of alle verwijzingen naar de eigenschap in uw toewijzingen verwijderen.
toegevoegd de auteur Morten Mertner, de bron
Ja; u moet de setter (en dus de kolom) toevoegen of alle verwijzingen naar de eigenschap in uw toewijzingen verwijderen.
toegevoegd de auteur Morten Mertner, de bron
Ja; u moet de setter (en dus de kolom) toevoegen of alle verwijzingen naar de eigenschap in uw toewijzingen verwijderen.
toegevoegd de auteur Morten Mertner, de bron
@MortenMertner bedoelt u dat deze eigenschap een correspondentiekolom in de database moet hebben?
toegevoegd de auteur Scott 混合理论, de bron
@MortenMertner bedoelt u dat deze eigenschap een correspondentiekolom in de database moet hebben?
toegevoegd de auteur Scott 混合理论, de bron

1 antwoord

de openbare tekenreeks RuleType gedefinieerd als alleen-lezen (geen set {..} ).

EF zal deze eigenschap niet toewijzen met database. zie Uw DB-schema zal het slechts 2 kolommen genereren (Id, TemplateId)

2
toegevoegd
Dan kunt u .Map (m => m.Requires ("RuleType") niet gebruiken omdat EF-model deze eigenschap niet zal herkennen. Probeer Data-annotatie of MetaDataAttributes in plaats daarvan.
toegevoegd de auteur aifarfa, de bron
maar ik heb geen setter nodig en wil niet dat het wordt toegewezen aan de database. suggesties?
toegevoegd de auteur Scott 混合理论, de bron