2011-03-13 208 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