【发布时间】:2017-10-30 23:29:01
【问题描述】:
我看了一些 EF 教程,但我无法弄清楚一些事情。我目前正在使用 ADO 与 SQL 服务器数据库交互的 .net 测试项目。我现在必须将 ADO 部分传递给实体框架。 我目前正在使用 3 层,业务、对象和 DataAcess。
在 DA 中,我有以下查询来更新我网站上的 Employee 表。它可以工作,但我想使用 Linq 将它传递给实体框架。我还有一些类似的插入和选择案例,但我相信一旦我可以对这个进行排序,我就能弄清楚它们。
注意:我已经使用实体框架将我的 DataAccess 类与数据库连接起来,实体列表对象称为 ListEntities。
SqlConnection conn = new SqlConnection();
try
{
SqlCommand comm;
string connectionString = ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
conn = new SqlConnection(connectionString);
comm = new SqlCommand("UPDATE Employee SET Name=@Name, Lname=@Lname, Age=@Age, Email=@Email, Year=@Year, ColorID=@ColorID, AvatarID=@AvatarID WHERE EmployeeID=@EmployeeID", conn);
comm.Parameters.Add("@Name",
System.Data.SqlDbType.VarChar, 70);
comm.Parameters["@Name"].Value = User.Name;
comm.Parameters.Add("@Lname",
System.Data.SqlDbType.VarChar, 70);
comm.Parameters["@Lname"].Value = User.Lname;
comm.Parameters.Add("@Age",
System.Data.SqlDbType.Int);
comm.Parameters["@Age"].Value = User.Age;
comm.Parameters.Add("@Email",
System.Data.SqlDbType.NVarChar, 70);
comm.Parameters["@Email"].Value = User.Email;
comm.Parameters.Add("@AYear",
System.Data.SqlDbType.Int);
comm.Parameters["@Year"].Value = User.Year;
comm.Parameters.Add("@ColorID",
System.Data.SqlDbType.Int);
comm.Parameters["@ColorID"].Value = User.ColorID;
comm.Parameters.Add("@AvatarID",
System.Data.SqlDbType.Int);
comm.Parameters["@AvatarID"].Value = User.AvatarID;
comm.Parameters.Add("@EmployeeID",
System.Data.SqlDbType.Int);
comm.Parameters["@EmployeeID"].Value = User.UserID;
conn.Open();
comm.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
【问题讨论】:
-
如果您只是要重新抛出异常,请不要捕获它。这样做没有意义。绝对不要对捕获的异常执行
throw ex;,您将丢失堆栈跟踪。只需throw;。 -
仅供参考,您可以将这些单行:
comm.Parameters.Add("@Name", System.Data.SqlDbType.VarChar, 70).Value = User.Name;保存集合查找。 -
不是我问的,但很高兴知道。
标签: c# asp.net sql-server entity-framework linq