当我尝试使用存储过程插入项目时,我得到一个EntityCommandExecutionException,不,我不想用存储过程填充表。
namespace Diplomverwaltung
{
/// <summary>
/// Interaktionslogik für erstellen.xaml
/// </summary>
public partial class erstellen : Window
{
Entities6 db = new Entities6();
public erstellen()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
int hauptv = int.Parse(hauptverantwortlich.Text);
int abteilungg = int.Parse(abteilung.Text);
String schwerpunktt = schwerpunkt.Text;
if (hauptv != null && abteilungg != null && schwerpunktt != null)
{
db.DiplomprojektInsert(abteilungg, schwerpunktt, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, true, 905417, hauptv);
}
}
}
}
存储过程:
USE [5abifdiplomdb]
GO
/****** Object: StoredProcedure [dbo].[DiplomprojektInsert] Script Date: 08.06.2015 19:06:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[DiplomprojektInsert]
@Di_Abteilung int,
@Di_Ausbildungsschwerpunkt nvarchar(250),
@Di_Titel nvarchar(250),
@Di_Untertitel nvarchar(250),
@Di_Aufgabenstellung nvarchar(400),
@Di_Zielsetzung nvarchar(400),
@Di_geplantes_Ergebnis nvarchar(400),
@Di_Meilenstein nvarchar(200),
@Di_Rechtliche_Regelung nvarchar(200),
@Di_Praesentationsname nvarchar(250),
@Di_Titel_Englisch nvarchar(250),
@Di_Zusammenfassung nvarchar(400),
@Di_Zusammenfassung_Englisch nvarchar(400),
@Di_Typ nchar(1),
@Di_Stichwoerter nvarchar(200),
@Di_Stichwoerter_Englisch nvarchar(200),
@Di_Link_Projektseite nvarchar(100),
@Di_Umfeld nvarchar(400),
@Di_Sperrvermerk bit,
@Di_Schule int,
@schuelerhauptverantwortlich int
-- hier noch andere Felder überlegen (zumindest betreuer (ist anlegender), schüler hauptverantwortlich)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
declare @diid int
declare @zurueck nvarchar(250) -- aufnehmen fehler bzw. neue id
declare @fehler nvarchar(250)
-- prüfe Voraussetzungen
set @fehler = null
if not exists (select 1 from AktBenutzer inner join tbenutzer on akb_Benutzerid = Ben_id where Ben_Benutzerart in('Betreuer') )
begin
set @fehler = coalesce(@fehler + '/','') + 'Anlegender Benutzer muss ein Betreuer sein'
end
if not exists (select 1 from tAbteilungen inner join AktBenutzer on Abt_Schule = Akb_Schule where Abt_ID = @Di_Abteilung )
begin
set @fehler = coalesce(@fehler + '/','') + 'Abteilung leer oder nicht Schule des Benutzers'
end
if not exists (select 1 from tAbteilungen inner join AktBenutzer on Abt_Schule = Akb_Schule
inner join tSchulen on Abt_Schule = Sch_Kennzahl
where Abt_ID = @Di_Abteilung and Abt_Schule = @Di_Schule )
begin
set @fehler = coalesce(@fehler + '/','') + 'Schule leer oder nicht Schule des Benutzers'
end
if not exists (select 1 from tAbteilungen inner join AktBenutzer on Abt_Schule = Akb_Schule
inner join tSchulen on Abt_Schule = Sch_Kennzahl
where Abt_ID = @Di_Abteilung and Abt_Schule = @Di_Schule and
Sch_Direktor is not null and Sch_Lsi is not null )
begin
set @fehler = coalesce(@fehler + '/','') + 'Schule hat keinen Direktor bzw. Lsi'
end
if @Di_Titel is null
begin
set @fehler = coalesce(@fehler + '/','') + 'Pflichtfelder (Titel) fehlen'
end
-- weiteres @schuelerhauptverantwortlich leer oder ein schüler der schule
if @fehler is not null -- dann tschüss
begin
set @fehler = 'ERROR - ' + @fehler
RAISERROR (@fehler, 16, 1);
return
end
BEGIN TRAN
INSERT INTO [dbo].[tDiplomprojekte]
( Di_Abteilung, Di_Ausbildungsschwerpunkt, Di_Titel, [Di_Untertitel], [Di_Aufgabenstellung], [Di_Zielsetzung], [Di_geplantes_Ergebnis],
Di_Meilenstein, [Di_Rechtliche_Regelung], [Di_Praesentationsname], [Di_Titel_Englisch], [Di_Zusammenfassung], [Di_Zusammenfassung_Englisch],
Di_Typ, Di_Stichwoerter, [Di_Stichwoerter_Englisch], [Di_Link_Projektseite], [Di_Umfeld], [Di_Sperrvermerk], [Di_Schule])
SELECT @Di_Abteilung, @Di_Ausbildungsschwerpunkt, @Di_Titel, @Di_Untertitel, @Di_Aufgabenstellung, @Di_Zielsetzung, @Di_geplantes_Ergebnis,
@Di_Meilenstein, @Di_Rechtliche_Regelung, @Di_Praesentationsname, @Di_Titel_Englisch, @Di_Zusammenfassung, @Di_Zusammenfassung_Englisch,
@Di_Typ, @Di_Stichwoerter, @Di_Stichwoerter_Englisch, @Di_Link_Projektseite, @Di_Umfeld, @Di_Sperrvermerk, @Di_Schule
set @diid = SCOPE_IDENTITY()
-- hier muss der erste Status geschrieben werden tDiplschritte
insert into tDiplschritte
(Dis_Diplomprojekt, Dis_Ablaufschritt, Dis_Start, Dis_Ende, Dis_Ben_ID)
Values(@diid, (select top 1 as_id from tAblaufschritte order by As_Order), -- 1. Schritt via Order
getdate(), null,
(select Akb_BenutzerID from aktbenutzer) )
-- hier müssen benutzerzurdnungen geschrieben werden tDiplbens
insert into tDiplBens (Dib_Diplomprojekt,Dib_Benutzer,Dib_Isthauptverantwortlich) -- Betreuer
values (@diid, (select Akb_BenutzerID from aktbenutzer), 1)
insert into tDiplBens (Dib_Diplomprojekt,Dib_Benutzer,Dib_Isthauptverantwortlich) -- AV
values (@diid, (select Abt_AV from tAbteilungen
where Abt_ID = @Di_Abteilung), 1)
insert into tDiplBens (Dib_Diplomprojekt,Dib_Benutzer,Dib_Isthauptverantwortlich) -- Dir
values (@diid, (select Sch_Direktor from tschulen
where Sch_Kennzahl = @Di_Schule), 1)
insert into tDiplBens (Dib_Diplomprojekt,Dib_Benutzer,Dib_Isthauptverantwortlich) -- Lsi
values (@diid, (select Sch_lsi from tschulen
where Sch_Kennzahl = @Di_Schule), 1)
if @schuelerhauptverantwortlich is not null
begin
insert into tDiplBens (Dib_Diplomprojekt,Dib_Benutzer,Dib_Isthauptverantwortlich) -- Schüler hauptv.
values (@diid, @schuelerhauptverantwortlich, 1)
end
-- Begin Return Select <- do not remove
SELECT [Di_ID], [Di_Abteilung], [Di_Ausbildungsschwerpunkt], [Di_Titel], [Di_Untertitel], [Di_Aufgabenstellung], [Di_Zielsetzung], [Di_geplantes_Ergebnis],
[Di_Meilenstein], [Di_Rechtliche_Regelung], [Di_Praesentationsname], [Di_Titel_Englisch], [Di_Zusammenfassung], [Di_Zusammenfassung_Englisch],
[Di_Typ], [Di_Stichwoerter], [Di_Stichwoerter_Englisch], [Di_Link_Projektseite], [Di_Umfeld], [Di_Sperrvermerk], [Di_Schule]
FROM [dbo].[tDiplomprojekte]
WHERE [Di_ID] = @diid
-- End Return Select <- do not remove
COMMIT