web-dev-qa-db-fra.com

Erreur de structure d'entité "Le type d'entité n'est pas mappé."

Nous utilisons Entity Framework dans notre projet et j'ai une entité que j'ai construite dans mon modèle. J'ai ensuite une fonction d'importation qui utilise une procédure stockée. La méthode créée par la fonction import est censée renvoyer une collection de l'entité personnalisée que j'ai créée.

Le problème est que j'obtiens une erreur lors de la génération qui dit "Le type d'entité 'someentity' n'est pas mappé.

Qu'est-ce que ça veut dire? Est-il contrarié parce que l'entité n'a pas de magasin de données sous-jacent? Il n'en a pas besoin, l'importation de fonction renvoie des instances de cette entité et je n'ai pas besoin de mettre à jour, de modifier ou d'insérer des entités de ce type.

L'importation de fonction fonctionne très bien et renvoie une collection de mon entité comme vous le souhaitez, mais cette erreur est ennuyeuse. Bien que la liste d'erreurs la répertorie comme une erreur de compilation, elle n'arrête pas réellement la compilation de la solution.

Mettre à jour

Si j'ouvre l'EDMX dans l'éditeur XML et double-clique sur l'erreur dans la liste d'erreurs, il met en évidence ce morceau de XML en rouge:

   <EntityContainerMapping StorageEntityContainer="KlasEntitiesStoreContainer" CdmEntityContainer="KlasEntities">
      <EntitySetMapping Name="VendorBriefs"><EntityTypeMapping TypeName="KlasEntityDataModel.VendorBrief"><MappingFragment StoreEntitySet="ev_VendorBriefs">
        <ScalarProperty Name="VendorBriefID" ColumnName="VendorBriefID" />
        <ScalarProperty Name="Title" ColumnName="Title" />
        <ScalarProperty Name="Link" ColumnName="Link" />
        <ScalarProperty Name="LinkText" ColumnName="LinkText" />
        <ScalarProperty Name="BriefPath" ColumnName="BriefPath" />
        <ScalarProperty Name="Description" ColumnName="Description" />
        <ScalarProperty Name="IsActive" ColumnName="IsActive" />
        <ScalarProperty Name="DisplayOrder" ColumnName="DisplayOrder" />
      </MappingFragment></EntityTypeMapping></EntitySetMapping>
      <FunctionImportMapping FunctionImportName="SearchForVendorProductByKlasID" FunctionName="KlasEntities.Store.ev_ds_Products_SearchByKLASID" />
    </EntityContainerMapping>
18
Chev

Chaque entité doit être mappée à QueryView ou à la table de base de données/requête de définition. Vous ne pouvez pas créer l'entité qui n'est pas du tout mappée. Si vous souhaitez définir le résultat de l'importation de fonction qui n'est pas mappé dans votre modèle, vous devez définir votre VendorBrief comme type complexe.

10
Ladislav Mrnka
  1. Cliquez avec le bouton droit dans le modèle de données et sélectionnez Navigateur de modèles
  2. Dans la fenêtre du navigateur de modèles, accédez à Importations de fonctions et supprimez les éléments appropriés.
  3. .
8
F Snyman

Essayez d'ouvrir votre diagramme de fichiers d'entité, le .edmx. Et puis supprimez toutes les tables à l'aide de DEL. Et puis faites un clic droit à l'intérieur du diagramme et sélectionnez Mettre à jour le modèle à partir de la base de données.

Le Visual Studio est un peu bogue dans ce genre de choses.

6
alansiqueira27

Avez-vous essayé de le représenter en utilisant un type complexe au lieu d'une entité et en le mappant à la place?

http://msdn.Microsoft.com/en-us/library/bb738472.aspx

3
Ian Mercer