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:
[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).
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: [img]https://i.sstatic.net/CQ5xg6rk.png[/img]
[list] [*][code]FruitBox[/code] Tabelle besitzt eine Diskriminatorin Spalte, die "Banane" oder "Kirsche" sein kann. [*][code]Fruitbox[/code] Tabelle besitzt (Art von) eine Fremdschlüssel, die auf Banane oder Kirsch zeigt, abhängig von Diskriminator Wert.[code]FruitBox[/code] Tabelle ([code]Discriminator = "Banana"[/code]) zu bananabox Entität mit einer Banane Kind [*][code]FruitBox[/code] Tabelle ([code]Discriminator = "Cherry"[/code]) an Cherrybox Entität mit einer Kirsche child [/list] Dies ist meine Implementierung: [code][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(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 [/code] Eigenschaft von fruitbox zu bananabox zu bewegen (und zu Kirchenkasten>) ohne Erfolg. Ansatz).
Wie man EF -Kern verwendet, um einen zusammengesetzten Fremdschlüssel zu verwalten, der einen übergeordneten Datensatz bezieht, dessen ID nach dem Insertion durch einen Datenbankauslöser generiert...
Das Wort „Home“ in der oberen Navigation hat zwei verschiedene Farben: Rot und Blau. Wie kann ich die gelbe Farbe unter den folgenden Bedingungen für dieses Wort (Home) anwenden: