首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请求大家一个关DAL层的实体类有关问题。懂DAL层的人,请进。讲就发分

2014-01-15 
请求大家一个关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

热点排行