2017-08-08 57 views
0

我正在使用EF和存儲過程進行數據修改操作。到目前爲止,我已經能夠將存儲過程映射到基本操作,例如插入,更新和刪除一行(實體)。實體框架AddRange:如何映射到存儲過程?

但是,我想也映射AddRange。我需要一個專門用於此操作的存儲過程,並且EF不會爲我調用添加存儲過程n次。我希望它會調用我的AddRange存儲過程一次。

我還想將另一個常見任務映射爲Clear,但現在AddRange是我的首要任務。這種映射在EF中可能嗎?如果不是,這是否有意義添加或我正在尋找錯誤的方向?

回答

0

我假設你說的是AddRange這是DbSet的擴展方法。

您不能將存儲過程映射到AddRangeClear,因爲這些方法只是準備實體,在調用SaveChanges之前什麼都不會添加到數據庫。

如果你需要一個DB調用添加多條記錄,你可以這樣調用它,而不是與DbSet

public class Context : DbContext 
{ 

    public void AddList() 
    { 
     this.Database.SqlQuery<YourEntityType>("storedProcedureName",params); 
    } 
} 
+0

但我可以映射存儲過程來如加。當我調用SaveChanges時,我的存儲過程被調用。其實這正是我現在正在做的。我沒有看到爲什麼它必須與AddRange或Clear不同的原因。 –

+0

,因爲當您將存儲過程映射到Add時,它不會映射到DbSet的Add方法,正如您所說的,您的存儲過程將在SaveChanges後調用。您的存儲過程將被映射爲添加**記錄**,無論它來自Add還是AddRange。隨意問,如果它不夠清楚? – Kahbazi