当前位置: 代码迷 >> ASP.NET >> 三层设计中关于update的存储过程解决方案
  详细解决方案

三层设计中关于update的存储过程解决方案

热度:442   发布时间:2013-02-25 00:00:00.0
三层设计中关于update的存储过程
我看三层设计的asp.net系统中,对数据库的操作都是通过存储过程来执行的。系统只是把变量传递给存储过程。

那么关于新增、删除的存储过程容易实现。但是update就麻烦了。

如果系统在不同的地方会对表的不同字段进行update。那么是不是有几个update就必须写几个存储过程?

这样是不是很麻烦?

为什么不把sql语句(比如 column=值)传递给存储过程呢?这样只需要一个存储过程就可以了

------解决方案--------------------------------------------------------
LIST<T>保存修改属性,遍历形成SQL语句
LINQ操作,修改对象属性
------解决方案--------------------------------------------------------
C# code
        public int Save(ReDS ds)        {            Database db = DatabaseFactory.CreateDatabase();            // Insert and Update            DbCommand insertCommand = db.GetStoredProcCommand(INSERT);            DbCommand updateCommand = db.GetStoredProcCommand(UPDATE);            // Init DbCommand Object            DbCommandHelper.BuildDbCommandParameter(db, insertCommand, ds.Requisition, DataRowVersion.Current);            DbCommandHelper.BuildDbCommandParameter(db, updateCommand, ds.Requisition, DataRowVersion.Current);            // Execute            if (this.dbTransaction != null)                return db.UpdateDataSet(ds.GetChanges(), ds.Requisition.TableName, insertCommand, updateCommand, null, (DbTransaction)this.dbTransaction);            else                return db.UpdateDataSet(ds.GetChanges(), ds.Requisition.TableName, insertCommand, updateCommand, null, UpdateBehavior.Transactional);        }
------解决方案--------------------------------------------------------
楼上说的用的 LINQ 可以,那是懒蛋的人写法, 

存储过程里可以用事物包含多个UPDATE,你可以吧 条件 和 字段作为动态生成处理。
这样 可以是通用更新。

还有就是 逻辑上的事情 不是代码多少可以决定的。
------解决方案--------------------------------------------------------
通用的东西必定造成效率的低下。。。你说传一长串字符串来的快还是几个值来得快?
  相关解决方案