.NET三层架构中DAL层的问题,万分感谢大神们解答

2025-05-05 02:10:25
推荐回答(1个)
回答1:

DataTable是原始ADO.net对象,比较简单,弊端是数据没法保留原始类型,在前端绑定时需要转换类型,也没法直接打“.”来调用成员产,简言之,不符合面向对象特征。


所以就有了ORM,对象关系映射,以实现数据表记录本身通常就可以用一个类来描述。一般用LINQ to SQL或EF来实现,如果没有做映射,纯粹手动编写类来描述数据对象,就是所谓的POCO,要做的工作多些,比如从数据库读取数据后手动将表内所有记录实例化为事先定义好的类中,再放入集合,这样在前端打"."即可调用成员,也无需再次转换类型!!


那么问题来了:你的学长让你返回List<>的目的就是希望你返回强类型的对象集合,以便前端更简便调用,以替代你之前返回的DataTable.


但是这个方法的问题就在Object把你辛苦转换好的强类型对象实例又打回原型了,因为再拿出来的时候,还需要再次转换,这就涉及到装箱拆箱,极大影响性能,违背初衷!


解决办法:

  1. 必须有合理的实体层(模型层)针对数据库映射,你可选择LINQ to SQL,LinQ to EF来实现,也可以手动写,该实体层必须合理处理好数据关系映射

2.尽量避免无必要的装拆箱,简言之不要在任何类型与object间来回转换,具体概念你百度一下就有

3.使用合理返回类型如:List


例:

class Course

    public int ID;

    public string Title;

    public List Students;

    ...

class Student

{

    public int ID;

    public string  Name;

    ...

}