I EF-Kodex Zuerst bin mit und das ist mein Modell mit Daten Annotation:Wie kann ich SQL die berechnete Spalte im Code verwenden ersten
public int Count { get; set; }
public int Fee { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? Total { get; set; }
Und ich habe eine Funktion in SQL Server:
ALTER FUNCTION dbo.Function4
(
@Count INT, @Fee INT
)
RETURNS Int
AS
BEGIN
DECLARE @Result INT
SET @Result = @Count * @Fee
RETURN
@Result
END
und in der berechneten Spalte Spezifikation des Gesamt schreibe ich diese Formel:
([dbo].[Function4]([Count],[Fee]))
Dies funktioniert gut. Aber meine Frage ist: Wann immer ich mein Modell ändere, wird die Datenbank neu erstellt, weil ich DropCreateDatabaseIfModelChanges
verwendet habe. Ich kann die [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
entfernen und aus dem Code berechnen, aber ich möchte wissen, was ist die [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
Verwendung in Code zuerst?
Haben Sie extern Ihre Funktion 'dbo erstellt .Funktion4' und Sie sind besorgt, es wird verschwinden und nicht wieder erstellt werden? –
@ Nick.McDeerjung Ja. Genau mein Problem ist das. –
Ich kann mir zwei Lösungen vorstellen, die funktionieren können oder nicht. 1. Machen Sie einfach eine Inline-berechnete Spalte (wenn möglich). Dann brauchen Sie die UDF nicht in der Datenbank; 2. Verwenden Sie ein Datenbankprojekt, das Sie zusammen mit allem anderen bereitstellen. Das Datenbankprojekt enthält Ihre benutzerdefinierte Funktion und wird zu einem bestimmten Zeitpunkt implementiert. –