哪种方法很好,为什么,如果我可以使用存储过程实现相同的功能?

时间:2018-10-09 04:12:42

标签: c# .net

using (var db = new PoContext())
{
    var maxSrno = db.poDtInfo.Where(x => x.Job_Code_Id == Convert.ToInt16(jobcodeID)).Select(x => x.Po_Dt_Id).Max();
    if (maxSrno == null)
        maxSrno = jobcodeID + 102 + 10000001;
    else
        maxSrno = Convert.ToString(Convert.ToInt64(maxSrno) + 1).ToString();  //Convert.ToInt64(maxSrno) + 1 .ToString();
    var newPo = new PoDtInfo();
    JsonConvert.PopulateObject(values, newPo);
    newPo.Po_Dt_Id = maxSrno;
    db.poDtInfo.Add(newPo);
    db.SaveChanges();
    result = true;
}

1 个答案:

答案 0 :(得分:1)

存储过程的缺点

  • 存储过程很难维护。重构起来很难使用例如特定模式或使用依赖项注入。
  • 它们很难调试。
  • 即使不是不可能,也很难进行单元测试。
  • 很难控制版本和部署。
  • 控制本地化比较困难(如果仅是生成本地化的错误消息)。
  • 此外,它们将bad集成到软件中。如果要获取.NET事件,异常,请写入日志文件等。
  • 使用在C#中编写的整洁的工具库更难或更不可能(例如项目特定的字符串处理,特定的数据类型,日期和时间等)

存储过程的优点

  • 存储过程可能会更快。仅在必须将大量数据加载到另一台计算机进行处理的情况下。

由于存在很多缺点,我只在必须解决无法用其他方法解决的性能问题时才使用存储过程。注意:我已经为大型的以数据库为中心的客户端-服务器应用程序编写了软件,而不必编写单个存储过程。