2009-06-13 9 views
1

Comment appeler une procédure stockée sans erreur dans ADO.NET Entity Framework? Si j'utilise le code ci-dessous, je reçois une erreur:Comment appeler une procédure stockée sans erreur dans ADO.NET Entity Framework?

adminNameContext.AddItemCategory(12, "ggf", DateTime.Now); 

Erreur:

Le lecteur de données est incompatible avec les 'spécifiées NetTanitimTestModel.Categories'. Un membre du type 'ID' n'a pas de colonne correspondante dans le lecteur de données avec le même nom.

ALTER procedure [dbo].[sp_AddItemCategory] 
( 
    @item int, 
    @category nvarchar(50), 
    @date smalldatetime 
) 
as 
begin 
    if(@item=-1) 
    begin 
    insert into Categories(PARENTID,Category,Date) values(null,@category,@date) 
    end 
    else 
    begin 
    insert into Categories(PARENTID,Category,Date) values(@item,@category,@date) 
    end 
end 

i ont table Catégories qui a obtenu 3 colonnes: PARENTID, Catégorie, Date

+1

L'erreur dit tout: vous essayez de référencer une colonne dans le resultset (« ID ») qui est pas là ... –

+0

nous montre ce que la procédure stockée ressemble (T-SQL code), et nous montre quelle table (la structure de la table) il exécute contre –

+0

marc_s; J'ai rafraîchi ma question. S'il vous plaît regarder à nouveau :) – Penguen

Répondre

0

Il semble que votre modèle de données EF et votre base de données ne soient plus synchronisés. Il semble que votre objet "Categories" dans le modèle de données EF ait un champ "ID" mais pas la table.

Je voudrais mettre à jour le modèle de données EF à partir de la base de données et voir si cela résout le problème. Pour ce faire, ouvrez le concepteur EDMX et faites un clic droit sur un emplacement vide dans la surface de conception, puis choisissez l'option "Mettre à jour le modèle de la base de données". Cela devrait synchroniser les deux mondes.

Marc

+0

marc_s je le fais mais le résultat est le même qu'avant ... – Penguen

+0

Quels champs sont sur votre objet "Catégories" dans le modèle de données EF? –

0

Mitch blé vous a donné la réponse. Vous essayez d'utiliser la colonne ID, mais la table comporte une colonne PARENTID.