好的我已經看到這個問題Entity Framework: Generate Database From Model removes Stored Procedures from Model Store但我不認爲這是解決。我有一些功能,我需要在SQL Server中運行以進行篩選。我無法在.NET中編寫該代碼,因此我只是將該函數作爲函數編寫在SQL Server中。我使用的是模型優先,但是我需要SQL級別的函數,並且我使用數據庫更新模型選項來導入函數。但是,當我在Entity Designer中進行更改並從模型生成數據庫時,函數映射將被刪除。我知道我不應該同時使用model-first和db-first,但是我怎麼才能解決我的問題呢?我有這樣的代碼,我不能用C#編寫,我需要在我的LINQ查詢中使用它。當我創建一個導入並創建帶有映射到數據庫函數的EdmFunction屬性的C#方法時,它確實工作,但是如何使它持久化,以便我的模型和SQL函數之間的鏈接在更新時保留?編寫可以在LINQ-to-Entities中翻譯唯一選項的函數?EF從模型生成數據庫刪除功能導入
這裏是我的SQL函數
create function [dbo].[HammingDistance]
(@first bigint, @second bigint) returns int
as
begin
declare @xor bigint = @first^@second;
declare @one bigint = 1;
declare @diff int = 0;
declare @and bigint;
while (@xor != 0)
begin
set @and = @xor & @one;
if(@and = @one)
begin
set @diff = @diff + 1;
end
set @xor = @xor/2;
end
return @diff;
end
(我不是一個SQL專家,這可能不是這樣做的最佳方式,所以如果有一個更好的辦法,指正)
我需要這個在數據庫中運行而不需要從數據庫導入任何東西到ASP.NET。如果您有辦法將此代碼轉換爲C#,並將其轉換爲LINQ-to-Entities中的SQL代碼,那麼也歡迎您。
我不是數據庫專家,所以原諒我,如果我說錯了什麼。無論如何,我討厭處理數據庫和SQL,並且我想遠離它,在一個抽象障礙的背後,而Entity Framework的模型首先對我很有好處。我知道,如果我以db-first爲例,它可能會更有效率,但我真的不喜歡使用SQL,它不是一個非常重要的性能關鍵業務項目。我已經安裝了電源組,但我不知道該怎麼做。在從模型生成數據庫中,會出現一個新的對話框,但我不知道該在哪裏設置或更改。 –