Ich benutze MySql 5.5-Datenbank. Ich habe meine Datenbank mit den ersten Migrationen des Entity Framework-Codes erstellt und standardmäßige gespeicherte Prozeduren für das Einfügen von Updates und das Löschen von Operationen mit der MapToStoredProcedures() - Methode in der DBContext-Klasse erstellt. Ich versuche, eine benutzerdefinierte Migrationsklasse hinzuzufügen. Code-Snippet:C# MySQL EF 6 Code Erste Migrationen erstellen benutzerdefinierte gespeicherte Prozedur mit dynamischen Where-Klausel Vorbereitung Anweisung gibt Fehler
using System;
using System.Data.Entity.Migrations;
public partial class Views : DbMigration
{
public override void Up()
{
Sql(@"
CREATE VIEW View_Jobs
AS
select
job.JobId as JobId,
job.JobNo as JobNo,
....";
);
CreateStoredProcedure(
"dbo.GetOpenJobs",
p => new
{
UserId = p.Long(),
RoleId = p.Long()
},
body:
@"
DECLARE query varchar(1000);
DECLARE strWhere varchar(100);
set @query = 'select JobId, JobNo, ... from view_jobs ';
IF RoleId <> 1 THEN
set @query = concat(@query, ' WHERE AssignedTo = ', UserId, ' AND AssignedToRole = ', RoleId, ' ');
end if;
set @query = concat(@query, ' group by JobId, JobNo,... ');
select @query;
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;"
);
}
public override void Down()
{
DropStoredProcedure("dbo.GetOpenJobs");
Sql(@"DROP VIEW IF EXISTS view_jobs;");
}
}
wenn ich ein Update-Befehl Datenbank verwende, wird die Ansicht ordnungsgemäß in der Datenbank erstellt zu werden, aber für gespeicherte Prozedur erstellen i unten Fehler sind zu empfangen.
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END' at line 19"
Das gleiche gespeicherte Proc funktioniert gut in der Datenbank. Obwohl ich @query in meinem .NET-Code erwähnt habe, wird beim Aktualisieren der Datenbank als Abfrage ohne @ -Symbol betrachtet.
Hier ist eine Arbeit um sie in Seed-Methode zu erstellen. Aber ich bevorzuge das nicht. Can you create sql views/stored procedure using Entity Framework 4.1 Code first approach
Weiß jemand, wie man dieses oder jede verfügbare Arbeit außer dem oben genannten freigegebenen Link löst?