Ich habe eine Reihe von Klassen, die alle A[1..n]
B
von einer abstrakten Klasse erben. Jede dieser A
Instanzen würde nur eine einzige Eigenschaft hinzugefügt haben - eine Fremdschlüsselzuordnung zu einer separaten Tabelle für jede Instanz. Jede Fremdschlüsselspalte hat den Namen ForeignKeyId
, nicht den Namen der Tabelle, also habe ich im Wesentlichen eine Reihe von Tabellen, die bis auf den Namen ziemlich identisch sind.gespeicherte Prozeduren generieren automatisch in Entity Framework Code-first
Ich möchte eine gespeicherte Prozedur schreiben, die Datensätze aus diesen Tabellen mit einigen spezifischen SQL Gruppierung und Bestellung und Verbinden und so weiter geladen wird. Der wichtigste Teil ist nicht die Abfrage selbst, sondern die gespeicherte Prozedur mit einem bestimmten Namen automatisch ohne Hinzufügen Zeile für Zeile manuell in der Migration selbst (was in dieser Frage ist die top-rated Antwort: Create Stored Procedures using Entity Framework Code First?) zu schaffen.
Ich habe versucht, die Schaffung zusätzlicher Operationen im MigrationCodeGenerator
:
public override ScaffoldedMigration Generate(string migrationId,
IEnumerable<MigrationOperation> operations, string sourceModel,
string targetModel, string @namespace, string className)
{
IList<MigrationOperation> operationsList = operations as IList<MigrationOperation> ?? operations.ToList();
var drop = new DropProcedureOperation($"{className}_LoadVersion");
var create = new CreateProcedureOperation($"{className}_LoadVersion", $"select * from {className}");
operationsList.Add(drop);
operationsList.Add(create);
CSharpMigrationCodeGenerator generator = new CSharpMigrationCodeGenerator();
return generator.Generate(migrationId, operationsList, sourceModel, targetModel, @namespace, className);
}
Allerdings ist meine Migration vollständig leer:
public partial class TestMigration : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
Sobald ich den Generator bekommen zu schaffen, etwas zu beginnen, kann ich fine-tune es von dort aus, aber ich bin ratlos darüber, wie man es schafft, eine gespeicherte Prozedur bei einer Migration zu erstellen.
warum müssen Sie eine gespeicherte Prozedur auf die Migration erstellen haben Sie sie für den Migrationsprozess benötigen? Sie können sie bei OnModelCreating erstellen und wenn die Migration aufgerufen wird, wird die Methode ausgeführt? –
@BassamAlugili Ich muss sie nicht bei der Migration erstellen, obwohl ich denke, dass dies der einfachste Weg wäre, um sicherzustellen, dass die gespeicherten Prozeduren für neue Tabellen erstellt werden.Ich werde sie beim Erstellen von Modellen untersuchen - aber das sind keine einfachen Objektladungen, daher weiß ich nicht, wie ich das mit ModelBuilder erstellen soll. – Max