Wie kann ich eine Eltern-Kind-Beziehung zuordnen, in der der Kindertyp von der Diskriminatorfeld des Elternteils abhängtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie kann ich eine Eltern-Kind-Beziehung zuordnen, in der der Kindertyp von der Diskriminatorfeld des Elternteils abhängt

Post by Anonymous »

Ich muss eine vorhandene Datenbank mithilfe von Entity Framework 6 abbilden, um (nur) Daten zu lesen. />I have simplified my real situation to the simplest in the following model:
Image
  • Code: Select all

    FruitBox
    Tabelle besitzt eine Diskriminatorin Spalte, die "Banane" oder "Kirsche" sein kann.
  • Code: Select all

    Fruitbox
    Tabelle besitzt (Art von) eine Fremdschlüssel, die auf Banane oder Kirsch zeigt, abhängig von Diskriminator Wert.

    Code: Select all

    FruitBox
    Tabelle (

    Code: Select all

    Discriminator = "Banana"
    ) zu bananabox Entität mit einer Banane Kind
  • Code: Select all

    FruitBox
    Tabelle (

    Code: Select all

    Discriminator = "Cherry"
    ) an Cherrybox Entität mit einer Kirsche child
Dies ist meine Implementierung:

Code: Select all

[Table("FruitBox")]
public abstract class FruitBox
{
[Key]
public Guid FruitBoxId { get; set; }

/// 
/// Discriminator can be "Banana" or "Cherry"
/// 
public string Discriminator { get; set; }

/// 
/// FK to the "Banana" or "Cherry" child, depending on Discriminator
/// 
public Guid FruitId { get; set; }
}

public class BananaBox : FruitBox
{
public Banana MyBanana { get; set; }
}

public class CherryBox : FruitBox
{
public Cherry MyCherry { get; set; }
}

[Table("Banana")]
public class Banana
{
[Key]
public Guid BananaId { get; set; }
public ICollection MyBananaBoxes { get; set; }
}

[Table("Cherry")]
public class Cherry
{
[Key]
public Guid CherryId { get; set; }
public ICollection MyCherryBoxes { get; set; }
}
< /code>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.Map(m => m.Requires("Discriminator").HasValue("Banana"))
.Map(m => m.Requires("Discriminator").HasValue("Cherry"))

modelBuilder.Entity()
.HasRequired(bb => bb.MyBanana)
.WithMany(b => b.MyBananaBoxes)
.HasForeignKey(bb => bb.FruitId);

modelBuilder.Entity()
.HasRequired(cb => cb.MyCherry)
.WithMany(c => c.MyCherryBoxes)
.HasForeignKey(cb => cb.FruitId);
}
< /code>
Leider beim Versuch zu lesen: < /p>
var boxes = this.DbContext.BananaBoxes.ToList()
< /code>
Die folgende Ausnahme wird ausgelöst: < /p>

 System.inValidoperationException: 'Die Fremdschlüsselkomponente' fruitId 'ist kein deklariertes Eigentum auf dem Typ' bananabox '. Stellen Sie sicher, dass es nicht explizit aus dem Modell ausgeschlossen wurde und dass es sich um eine gültige primitive Eigenschaft handelt. '

Ich habe versucht, FruitId 
Eigenschaft von fruitbox zu bananabox zu bewegen (und zu Kirchenkasten>) ohne Erfolg. Ansatz).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post