2011-03-13 70 views
0

我想改變下使用SqlParameter融入了更多類型版本類型化的SqlParameter在實體框架

private static void Update(int id, string lname) 
{ 
    new RememberEntities().ExecuteStoreCommand(
    @" UPDATE Users 
      SET lname = @lname 
      WHERE Id = @id", 
    new SqlParameter("lname", lname), new SqlParameter("id", id)); 
} 

例如,我希望能夠寫的東西很長的線:

private static void Update(int id, string lname) 
{ 
    new RememberEntities().ExecuteStoreCommand(
    @" UPDATE Users 
      SET lname = @lname 
      WHERE Id = @id", 
    new SqlParameterString("lname", lname), new SqlParameterInt("id", id)); 
} 

其中的第二個參數在SqlParameterInt()的情況下將採取字符串並且int。我已經嘗試創建自己的子類SqlParameter,唉,它是sealed所以沒有運氣那裏。

我想知道什麼是推薦的EF評估?

回答

2

您可以創建類型化的工廠方法,只有使用它們,但你真的不能避免直接使用SqlParameter構造函數(你也會有這樣的問題,即使SqlParameter將不密封,你只能創建自己的包裝方法這種情況)。

+0

是的,你是正確的,工廠方法可以做到這一點。我希望有更好的選擇:) – 2011-03-13 20:48:05

1

你可以使用一個存儲過程(返回一個標量值),然後使用EF 4.0,你可以添加一個'函數導入',然後你可以像任何C#函數一樣執行存儲過程。

+0

好主意,雖然我厭惡存儲過程:-) – 2011-03-13 20:48:21