EntitySet-System.InvalidOperationException - "der entity-Typ ist nicht Teil des Modells für den aktuellen Kontext"

Ähnliche Fragen

Der entity-Typ <classname> ist nicht Teil des Modells für den aktuellen Kontext -und- EF 4.1 Code Erste Fehler - Der entity-Typ SomeType ist nicht Teil des Modells für den aktuellen Kontext sind ähnliche Fragen, aber Sie sind "code first" - Perspektive nur mit sehr viel einfachere Datenmodelle und Adresse Verbindungszeichenfolge-und mapping-Themen. Bitte schauen Sie genau auf dieser.

Symptom

//HomeController.cs
public ActionResult Index()
{
    var _db = new MealsContext();

    var m = _db.Meals.ToList();
    var d = _db.Drinks.ToList();

    return View();
}

Ausnahme geworfen wird, ist das abrufen der Drinks Sammlung:

The entity type Drink is not part of the model for the current context.

- Code

//Meal.cs
public class Meal
{
    public int Id { get; set; }
    public string Stuff { get; set; }
    public virtual ICollection<Meat> Meats { get; set; }
    public virtual ICollection<Vegetable> Vegetables { get; set; }
}

//Meat.cs
public class Meat
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int MealId { get; set; }
}

//Vegetable.cs
public class Vegetable 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int MealId { get; set; }
}

//Drink.cs
public class Drink
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Ja, ich weiß, in der realen Welt das Verhältnis zwischen Fleisch und Gemüse mit Mahlzeiten würde wahrscheinlich viele-zu-Viele, aber nicht bekommen aufgehängt drauf hier.

//MealsContext.cs
public class MealsContext: DbContext
{               
    public MealsContext() : base("ConnectionString")

    public DbSet<Meal> Meals{ get; set; }
    public DbSet<Meat> Meats{ get; set; }
    public DbSet<Vegetable> Vegetables { get; set; }
    public DbSet<Drink> Drinks{ get; set; }
}

Meine Erfahrung war mit einem Modell der Ersten Methode. Die EDMX-Datei gebaut wurde, dann die POCOs.

In der Verbindungszeichenfolge ist die Metadaten-Abschnitt, der die Karten auf das geparste EDMX-Ressourcen (metadata=res://*/Models.MealsModels.csdl|res://*/Models.MealsModels.ssdl|res://*/Models.MealsModels.msl;).

Ich untersuchte die zugrunde liegenden XML-Code der EDMX-Datei zeigt alle Elemente vorhanden, die in Konzeptionelle und Lagern-Modelle, und alle sind vollständig kartiert. WTF???

Fehlerbehebung

Der erste Versuch war, um vollständig loszuwerden, die store-und EDMX mapping Daten (die SSDL und MSL Abschnitte). Feuer Weg, und jetzt gibt es zwei Ausnahmen:

  1. Abrufen Meals wirft MSL, error 2062 No mapping specified for instance of the EntitySet and AssociationSet in the EntityContainer.
  2. Abrufen Drinks weiter zu werfen The entity type Drinkis not part of the model for the current context.

Den Fehler ausgelöst, indem Meals erwartet, ich schob die Zuordnungen und speichern von Modell-Prüfung _db zeigt mir, dass Meals -> InternalSet -> EntitySet Eigenschaft ist korrekt, nur nicht abgebildet.

Den Fehler ausgelöst, indem Drinks ist, wo ich geblieben bin. Die Prüfung _db näher zeigt mir, dass Drinks -> InternalSet -> EntitySet wirft die SystemInvalidOperation Ausnahme, die besagt, dass die Entität nicht in der Modell-Kontext.

Hier ist, was die EDMX - CSDL sieht aus wie die im XML-format:

<edmx:ConceptualModels>
  <Schema ...>
    <EntityContainer Name="MealsContext" annotation:LazyLoadingEnabled="true">
      <EntitySet Name="Meals" EntityType="Models.Meal" />
      <EntitySet Name="Meats" EntityType="Models.Meat" />
      <EntitySet Name="Vegetables" EntityType="Models.Vegetable" />
      <EntitySet Name="Drinks" EntityType="Models.Drink" />
      <!-- AssociationSets here for the FKs -->
    </EntityContainer>
    <!-- All are present, but here's the culprit Drink -->
    <EntityType Name="Drink">
      <Key>
        <PropertyRef Name="Id" />
      </Key>
      <Property Type="Int32" Name="Id" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
      <Property Type="String" Name="Name" Nullable="false" MaxLength="200" FixedLength="false" Unicode="true" />
    </EntityType>
    <!-- Associations here -->
  </Schema>
</edmx:ConceptualModels>

Frage

Wenn die DbContext hat alle DbSet Eigenschaften und verbraucht eine Verbindungszeichenfolge enthält die Metadaten für ein Modell, wer CSDL korrekt definiert das entity-Typ Drink, warum in der Hölle ist es nicht Teil des Kontexts?

Nur, was andere über Drink dass ich sehen kann, ist, dass es nicht mit anderen Personen, und hat keine Verbände...

InformationsquelleAutor one.beat.consumer | 2012-11-29

Schreibe einen Kommentar