三层架构初学,请问个有关问题
三层架构初学,请教个问题
我的类表 id,name,parent_id,sort,english_name
通过bll层调用dal层的getClass方法
select * from classtable得到他们的数据封装到Model的Class类里边
如果我只想得到id,name的值如果直接调用这个方法是不是会浪费性能
是不是要从新写一个方法,直接select id,name但是这样的话怎么封装到model里呢
------解决方案--------------------
model应该有什么类型,是看表现层跟业务逻辑层协商(设计)结果,不是看数据库表。
那种根据几个数据库表就搞几个model的,实在是本末倒置。
------解决方案--------------------
返回一个实体完全可以啊
------解决方案--------------------
可以自己设计一个实体嘛
------解决方案--------------------
+1
------解决方案--------------------
你要连那个性能都在乎 那干脆别用MODEL了,层之间用字符创通信好了....甚至层都不用分了
------解决方案--------------------
没必要的,返回一个实体字段和多个字段是体现不出来的,如果一个表字段上百个,那就要考虑了……
------解决方案--------------------
说点实际的吧, 你的Model层还是不要变, 要不搞死你。
在DAL层加多一个方法, 只返回部分字段, 然后这部分有数据的字段赋给Model层的id,name两个属性就好。
------解决方案--------------------
如果调用 id,name的情况不是很多的话,可以直接获取select * ...
如果会频繁调用的话,建议另外写一个方法。model里只给id和name赋值就可以了
------解决方案--------------------
代码生成器生成的类是和数据库里的表对应的,不过 你可以在DAL自定义model啊 想要什么样的 都可以的
------解决方案--------------------
+1
几个字段的浪费~ 真的不算什么~
我们使用了C# 而不使用0和1 本身就已经很浪费了~
淘宝说 淘宝的用户那么多 所以能节约一个byte 那么也是节约好多的~
但等到你淘宝的级别的时候再说~
现在就牺牲点性能来换开发速度吧~ 难道你真的想用1和0来编程~
------解决方案--------------------
你们这些货都没给初学者一个答案。
------解决方案--------------------
一个方法就好了,你要什么字段,传参数过去拿什么字段。
如:select * from test
select a,b,c from test
改:
select 变量 from test
model还是保留吧 一个集合也可以用泛型
------解决方案--------------------
可以自定义一个model类,比如说如果你硬是只要id,name..
你就定义这两个成一个类就行了...
再说了,一般实体与数据库中差不多都是对应的,便于你想要得到数据中的字段。..
这算不上是浪费..
------解决方案--------------------
在Model里面的你说的那个类表写构造函数:
public 类表名(){}
public 类表名(int id,string name){
this.Id=id;
this.Name=name;
}
这样在select id,name 表名
------解决方案--------------------
执行SQL语句得到id和name直接实例化那个类
Iop i = new Iop(id,name);
这样得到的它的对象i就是了
------解决方案--------------------
应该这样来做一件事情:
1. 评价你这个做法有没有意义?如果字段本身不多,而且并不是那种非常需要效率、并发性很高的情况下,并不需要如此认真地节省。就像你下班回家,是带银行卡回家还是放办公室算了,在绝大多数的情况下,带上并没有多大影响的。
2. 如果一定要做。 select id, name from table ; 再将 id ==> obj.Id , name ==> obj.Name 就可以了, 也是件很简单的事。
楼主结贴吧, 不要浪费大家看贴的时间了。
我的类表 id,name,parent_id,sort,english_name
通过bll层调用dal层的getClass方法
select * from classtable得到他们的数据封装到Model的Class类里边
如果我只想得到id,name的值如果直接调用这个方法是不是会浪费性能
是不是要从新写一个方法,直接select id,name但是这样的话怎么封装到model里呢
------解决方案--------------------
model应该有什么类型,是看表现层跟业务逻辑层协商(设计)结果,不是看数据库表。
那种根据几个数据库表就搞几个model的,实在是本末倒置。
------解决方案--------------------
返回一个实体完全可以啊
------解决方案--------------------
可以自己设计一个实体嘛
------解决方案--------------------
+1
------解决方案--------------------
你要连那个性能都在乎 那干脆别用MODEL了,层之间用字符创通信好了....甚至层都不用分了
------解决方案--------------------
没必要的,返回一个实体字段和多个字段是体现不出来的,如果一个表字段上百个,那就要考虑了……
------解决方案--------------------
说点实际的吧, 你的Model层还是不要变, 要不搞死你。
在DAL层加多一个方法, 只返回部分字段, 然后这部分有数据的字段赋给Model层的id,name两个属性就好。
------解决方案--------------------
如果调用 id,name的情况不是很多的话,可以直接获取select * ...
如果会频繁调用的话,建议另外写一个方法。model里只给id和name赋值就可以了
------解决方案--------------------
代码生成器生成的类是和数据库里的表对应的,不过 你可以在DAL自定义model啊 想要什么样的 都可以的
------解决方案--------------------
我的类表 id,name,parent_id,sort,english_name
通过bll层调用dal层的getClass方法
select * from classtable得到他们的数据封装到Model的Class类里边
如果我只想得到id,name的值如果直接调用这个方法是不是会浪费性能
是不是要从新写一个方法,直接select id,name但是这样的话怎么封装到model里呢
如果调用 id,name的情况不是很多的话,可以直接获取select * ...
如果会频繁调用的话,建议另外写一个方法。model里只给id和name赋值就可以了
+1
几个字段的浪费~ 真的不算什么~
我们使用了C# 而不使用0和1 本身就已经很浪费了~
淘宝说 淘宝的用户那么多 所以能节约一个byte 那么也是节约好多的~
但等到你淘宝的级别的时候再说~
现在就牺牲点性能来换开发速度吧~ 难道你真的想用1和0来编程~
------解决方案--------------------
你们这些货都没给初学者一个答案。
------解决方案--------------------
一个方法就好了,你要什么字段,传参数过去拿什么字段。
如:select * from test
select a,b,c from test
改:
select 变量 from test
model还是保留吧 一个集合也可以用泛型
------解决方案--------------------
可以自定义一个model类,比如说如果你硬是只要id,name..
你就定义这两个成一个类就行了...
再说了,一般实体与数据库中差不多都是对应的,便于你想要得到数据中的字段。..
这算不上是浪费..
------解决方案--------------------
在Model里面的你说的那个类表写构造函数:
public 类表名(){}
public 类表名(int id,string name){
this.Id=id;
this.Name=name;
}
这样在select id,name 表名
------解决方案--------------------
在Model里面的你说的那个类表写构造函数:
public 类表名(){}
public 类表名(int id,string name){
this.Id=id;
this.Name=name;
}
这样在select id,name 表名
执行SQL语句得到id和name直接实例化那个类
Iop i = new Iop(id,name);
这样得到的它的对象i就是了
------解决方案--------------------
应该这样来做一件事情:
1. 评价你这个做法有没有意义?如果字段本身不多,而且并不是那种非常需要效率、并发性很高的情况下,并不需要如此认真地节省。就像你下班回家,是带银行卡回家还是放办公室算了,在绝大多数的情况下,带上并没有多大影响的。
2. 如果一定要做。 select id, name from table ; 再将 id ==> obj.Id , name ==> obj.Name 就可以了, 也是件很简单的事。
楼主结贴吧, 不要浪费大家看贴的时间了。