Schéma spécifié n'est pas valide. Erreurs: La relation "EntityA_EntityBs" n'a pas été chargé, car le type "EntityB" n'est pas disponible

Fond

Je travaille sur une application qui utilise Entity Framework pour interroger une base de données à partir d'une application tierce. La base de données a un grand nombre de tables et pas de clés étrangères. J'ai mappé les tableaux pertinents à des entités à l'aide de Entity Framework API Fluent.

Entités

namespace App.Entities
{
    public class Ticket
    {
        public int Id { get; set; }

        public virtual SalesOrder SalesOrder { get; set; }
        public int SalesOrderId { get; set; }
    }

    public class SalesOrder
    {
        public int Id { get; set; }

        public virtual ICollection<Ticket> Tickets { get; set; }
        public virtual ICollection<Ticket> Lines { get; set; }
    }
}

Mappages

Noter que la colonne et le nom de la table de mappage est oublié car je ne pense pas qu'ils soient pertinents.

namespace App.Mappings
{
    public class TicketMap : EntityTypeConfiguration<Ticket>
    {
        public TicketMap() {}
    }

    public class SalesOrderMap : EntityTypeConfiguration<SalesOrder>
    {
        public SalesOrderMap()
        {
            HasMany(t => t.Tickets)
                .WithRequired(t => t.SalesOrder)
                .HasForeignKey(t => t.SalesOrderId);

            HasMany(t => t.Lines)
                .WithRequired(t => t.SalesOrder)
                .HasForeignKey(t => t.SalesOrderId);
        }
    }
}

Les entités et leurs mappages sont correctement enregistrés avec Entity Framework.

Problème

Je reçois le suivant MetadataException lorsque j'essaie d'exécuter une requête:

Schéma spécifié n'est pas valide. Erreurs: La relation 'App.SalesOrder_Tickets " n'a pas été chargé, car le type d'Application.Billet " n'est pas disponible.

Noter que l'espace de noms de Ticket indiqué dans le message ci-dessus est faux. La classe d'entité est en fait dans App.Entities.Ticket. Cependant, je ne sais pas si c'est lié au problème ou pas.

Ce que j'ai Essayé

  1. De vérifier que la relation semble être correctement configuré
  2. Vérification de doublons de classes dans le modèle comme le suggère ce commentaire
  3. De vérifier que les entités sont dans le même espace de noms, comme suggéré dans cette réponse
Ce CodePlex commentaire peuvent également être associés à ce problème.

OriginalL'auteur Sam | 2014-01-15