关于实体类的疑惑
我想问下,,三层架构中,实体类到底有什么好处。例如说。我从数据库获取了数据,我可以把它直接放在DataSet里面,直接传到另外一层。。要用实体类的话,还得把获得的数据封装到实体类里面,这样做和直接传比起来有什么好处,,我喜欢有个比较通俗易懂的答案,,,不胜感激。。。 --------------------编程问答-------------------- 比如你在外面传递参数 要写5个甚至更多 用实体类 传递1个对象就可以额 --------------------编程问答-------------------- 不是很清楚。。我可以把所有的数据都直接用DataSet传过去啊。。 能说清楚些么,谢谢。。 --------------------编程问答-------------------- 简单说,就是编辑时就可以发现纠错而不是运行时发现错误一个字段叫Name
实体类如果写错了
X.Name="1";
写成了X.Nama="1";
编译时就出错了,其实根本智能感应就不会出来这个错误的字段
如果是直接传,就要自己保证字段的正确
比如
DR["Name"]="1";
写成了
DR["Nama"]="1";
编译不会出错,程序也能运行,直到执行到这行程序出错了你才知道写错了,如果是在一段用得很少的代码里,代码又非常多,测试又不够充分,就容易遗漏这个错误,知道客户那崩溃了才知道
--------------------编程问答-------------------- 编译时 --------------------编程问答-------------------- 只有这方面的好处么,还有没有其他的呢。。? --------------------编程问答-------------------- 也就是说即使你不用实体类,至少要有表定义
比如
Class ATable
{
public static Name="Name";
}
DR[ATable.Name]="1"; --------------------编程问答-------------------- 例如说我数据库只有一张表,,里面只有几列的数据,,还得另外建个实体类封装起来? --------------------编程问答-------------------- 别的方面?
可以实现类工厂 --------------------编程问答-------------------- 看你的需求了,如果简单的项目,不用三层也无所谓 --------------------编程问答-------------------- 我是北大青鸟的。他们教材里又弄了个模型层。用来放实体类。。说起来应该是4层。但我碰到我前面说的情况的话,也就是表里面的数据比较少的话。我都是直接返回个DataSet..然后直接在表示层那把控件的数据源绑在DataSet上,这样做规范么。。 --------------------编程问答-------------------- 额。。没人来了么。。 --------------------编程问答--------------------
你慢慢会理解这样的好处!!
把类封装成一个对象,实现各层间数据传递,一张表对应一个实体类 这也是面向对象的思想.
把表封装成一个一个的类!! --------------------编程问答-------------------- 其实实体类在三层架构中所实现的一个重要功能是将DAL,BLL,UI三层连接起来。比如说写一个实体类
class stuinfo{
private string name;
private string age;
public string Name{
get{}
set{}
public string Age{
get{}
set{}
}
实体类完成以后就可以简单的实现值在各个层之间的传递和处理。尤其是在BLL中,比如说要处理性别的选择,用0和1表示,用实体类接收。这样就省了很多代码。提高了代码的可读性。
}
} --------------------编程问答-------------------- 楼上说的对,实体类其实可以理解为一种规定性的抽象封装,比如在数据库里A和B是相关的两个字段,那么他们在程序里面就应该需要维护关联的关系,那么,抽象成实体类就是一个比较好的方法。当然,如你所说,用集合也可以实现类似的事情。但那样以后维护起来就比较麻烦。
诚然,可能现在你也感觉不到差别,那是因为代码量小了,遇到改动的时候比较好改,所以不觉得。当你一个类的代码行上3000了,你再试试用集合来做,你就会明白为啥咱会用实体类了。
最后最后,简而言之,一切为了抽象,一切为了封装。 --------------------编程问答-------------------- 大概明白了。谢谢了。还有。楼上再楼上的。。不好意思啊。。按错了。鼠标点到板砖那了。对不起啊。。
补充:.NET技术 , C#