2009-06-13 6 views
1

Wie rufe ich eine gespeicherte Prozedur ohne Fehler in ADO.NET Entity Framework auf? Wenn ich den Code unten verwenden, erhalte ich eine Fehlermeldung:So rufen Sie gespeicherte Prozedur ohne Fehler in ADO.NET Entity Framework auf?

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

Fehler:

Der Datenleser ist unvereinbar mit dem angegebenen 'NetTanitimTestModel.Categories'. Ein Mitglied des Typs 'ID' hat keine entsprechende Spalte im Datenleser mit demselben Namen.

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 

Ich habe Tabelle Kategorien, die 3 Spalten bekommen hat: PARENTID, Kategorie, Datum

+1

Der Fehler sagt alles: Sie versuchen, eine Spalte in der Ergebnismenge (‚ID‘) zu verweisen, die nicht da ist ... –

+0

uns Zeigt, wie die gespeicherte Prozedur sieht aus wie (T-SQL Code), und zeigen Sie uns, welche Tabelle (die Tabellenstruktur) es gegen –

+0

marc_s läuft; Ich habe meine Frage aktualisiert. Bitte schauen Sie nochmal :) – Penguen

Antwort

0

Es sieht so aus, als ob Ihr EF-Datenmodell und Ihre Datenbank nicht mehr synchron sind. Es sieht so aus, als ob Ihr Objekt "Kategorien" im EF-Datenmodell ein Feld "ID" enthält, die Tabelle jedoch nicht.

Ich würde das EF-Datenmodell aus der Datenbank aktualisieren und sehen, ob das das Problem behebt. Öffnen Sie dazu den EDMX-Designer und klicken Sie mit der rechten Maustaste auf eine freie Stelle in der Entwurfsoberfläche und wählen Sie die Option "Modell aus Datenbank aktualisieren". Das sollte die beiden Welten wieder synchronisieren.

Marc

+0

marc_s ich mache es, aber das Ergebnis ist das gleiche wie zuvor ... – Penguen

+0

Welche Felder sind auf Ihrem "Categories" -Objekt im EF-Datenmodell? –

0

Mitch Weizen gab Ihnen die Antwort. Sie versuchen, die Spalte ID zu verwenden, aber die Tabelle enthält eine Spalte PARENTID.

Verwandte Themen