请求大家一个关DAL层的实体类问题。。。懂DAL层的人,请进。。。。。。。。。。。。。。。。。。。。。。讲就发分说一个简单场景publi
请求大家一个关DAL层的实体类问题。。。懂DAL层的人,请进。。。。。。。。。。。。。。。。。。。。。。讲就发分 说一个简单场景
public bool UpOrder(Model.Orders model)
{
}
首先你不需要自己重新new一个model 你在update之前是可以从集合中取到这个model的然后
你直接model.xxx=xxx就是你要修改的哪几个属性,然后再传进来。这样你就不用管他这个UpOrder下面是怎么操作的了。
[解决办法] 传个集合进去for
[解决办法] /// <summary> /// 设置存储参数 /// </summary> /// <param name="objinfo">模型数据</param> /// <returns></returns> public DbParameter[] SetValueParam(object objinfo) { Type type = objinfo.GetType(); DbParameter[] param = new DbParameter[type.GetProperties().Length]; int i = 0; foreach (PropertyInfo proper in type.GetProperties()) { if (DBConfig.DBType.ToLower() == "sql") { param[i] = new SqlParameter("@" + proper.Name, proper.GetValue(objinfo, null)); } else { param[i] = new OleDbParameter("@" + proper.Name, GetValue(proper.GetValue(objinfo, null), proper.PropertyType.Name)); } i++; } return param; }
[解决办法] public bool UpOrder(Model.Orders model) { } 首先你不需要自己重新new一个model 你在update之前是可以从集合中取到这个model的然后 你直接model.xxx=xxx就是你要修改的哪几个属性,然后再传进来。这样你就不用管他这个UpOrder下面是怎么操作的了。什么意思。。没有听懂。。
你在更新新肯定有有先取至好Model了这个实体了吧。 然后在介面上编辑后,保存这样一个动作吧
就是说你的Model直接用取好的那个Model进行更新只要把相应的属性更新 然后再把这个实体转给UpOrder这个,这样你就不用关掉他要更新多少个字段
[解决办法] public bool UpOrder(Model.Orders model) { } 首先你不需要自己重新new一个model 你在update之前是可以从集合中取到这个model的然后 你直接model.xxx=xxx就是你要修改的哪几个属性,然后再传进来。这样你就不用管他这个UpOrder下面是怎么操作的了。
什么意思。。没有听懂。。
你在更新新肯定有有先取至好Model了这个实体了吧。 然后在介面上编辑后,保存这样一个动作吧
就是说你的Model直接用取好的那个Model进行更新只要把相应的属性更新 然后再把这个实体转给UpOrder这个,这样你就不用关掉他要更新多少个字段
你的意思是说,从页面那里获取的值,存进model,然后,把这个model放进uporder这个方法是吧。。?
如果是这样的话。。不是行的啊。。比如有uptime这个字段,我还是从后台添加上时间,但是,我无法从model知道还有一个uptime字段,我要去dal去看,才知道有uptime这字段要更新。。给你举个列子
假设这是你的Update.aspx页面
你是不是要这样子
private Model.Orders model;
string OrderID=Request["ID"];
model=DAL.GetOrders(OrderID) <==这里是取到你要修改的实体了 <这里提取的实体你要确认一下他是不是给你表中全部对应的属性值。
下面是赋给文本框让你去修改
txtName.Text=model.Name
txtXXXX.Text=model.Sex
txtEEE.Text=model.ABC;
然后呢
你要点保存怎么办呢??
那就是利用上面的那个model 就可以了 注意你不要再去new一个实体
直接用上面的那个把他定义为一个类的全局变量private Model.Orders model;
然后直接 这里只要更新你自己要更新的属性
model.Name=txtName.Text;
modelSex=txtXXXX.Text;
model.ABC=txtEEE.Text;
然后
XXX.UpOrder(model)
明白了没 就是你不用去管他里面有多少个字段,只要传进去就是了
[解决办法] 你想的太多了,你只要知道他根据什么修改的,这个很明显是根据PKid进行修改的,所以model里必需要有PKid,其它的你赋值就可以了
[解决办法] public bool UpOrder(Model.Orders model) { } 首先你不需要自己重新new一个model 你在update之前是可以从集合中取到这个model的然后 你直接model.xxx=xxx就是你要修改的哪几个属性,然后再传进来。这样你就不用管他这个UpOrder下面是怎么操作的了。什么意思。。没有听懂。。
你在更新新肯定有有先取至好Model了这个实体了吧。 然后在介面上编辑后,保存这样一个动作吧
就是说你的Model直接用取好的那个Model进行更新只要把相应的属性更新 然后再把这个实体转给UpOrder这个,这样你就不用关掉他要更新多少个字段
你的意思是说,从页面那里获取的值,存进model,然后,把这个model放进uporder这个方法是吧。。?
如果是这样的话。。不是行的啊。。比如有uptime这个字段,我还是从后台添加上时间,但是,我无法从model知道还有一个uptime字段,我要去dal去看,才知道有uptime这字段要更新。。给你举个列子
假设这是你的Update.aspx页面
你是不是要这样子
private Model.Orders model;
string OrderID=Request["ID"];
model=DAL.GetOrders(OrderID) <==这里是取到你要修改的实体了 <这里提取的实体你要确认一下他是不是给你表中全部对应的属性值。
下面是赋给文本框让你去修改
txtName.Text=model.Name
txtXXXX.Text=model.Sex
txtEEE.Text=model.ABC;
然后呢
你要点保存怎么办呢??
那就是利用上面的那个model 就可以了 注意你不要再去new一个实体
直接用上面的那个把他定义为一个类的全局变量private Model.Orders model;
然后直接 这里只要更新你自己要更新的属性
model.Name=txtName.Text;
modelSex=txtXXXX.Text;
model.ABC=txtEEE.Text;
然后
XXX.UpOrder(model)
明白了没 就是你不用去管他里面有多少个字段,只要传进去就是了
但是,这个真是很简单的场景哦。。
比如说,保存的时候,
model.Name=txtName.Text;
modelSex=txtXXXX.Text;
model.ABC=txtEEE.Text;
获取这三个值,但是,DAL要更新5个字段,还有二个字段,需要在BLL判断逻辑之后,再添加进去的。。
。。。你还没明白呀,添不加两字段,跟DAL没关系。你不想修改就保持原值就是了。修改的就把那个值改了。
再说了你的UI调用都是通过BLL来调的,又不是直接访问DAL
[解决办法] 1.DAL 应当具备一定的 公共性
2.UpOrder 把所有的Model字段参数都加进去,做成一个公共的更新方法
3.更新时 先 GetModel ,然后再修改对应要修改的字段
4.统一Update