我使用EF-代碼第一次,這是我的模型與數據註釋:如何使用SQL的計算列在代碼第一
public int Count { get; set; }
public int Fee { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int? Total { get; set; }
而且我在SQL Server中的函數:
ALTER FUNCTION dbo.Function4
(
@Count INT, @Fee INT
)
RETURNS Int
AS
BEGIN
DECLARE @Result INT
SET @Result = @Count * @Fee
RETURN
@Result
END
而且在總的計算列規範我寫這個公式:
([dbo].[Function4]([Count],[Fee]))
這工作得很好。但我的問題是:每當我改變模型時,數據庫將重新創建,因爲我已經使用了DropCreateDatabaseIfModelChanges
。我可以刪除[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
並從代碼中計算出來,但我想知道代碼中的[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
用法是什麼?
你有外部創建你的函數傳遞,'DBO .Function4',你擔心它會消失,不會再被創建? –
@ Nick.McDermaid是的。我的問題確實是這樣的。 –
我可以想到兩種解決方案可能或不可行。 1.將其作爲內聯計算列(如果可能)。那麼你不需要數據庫中的UDF; 2.使用一個數據庫項目,與其他任何項目一起部署。數據庫項目包含您的UDF,並在某個時刻進行部署。 –