三层架构中多表查询是返回实体好还是集合好? 这个问题一直困扰着我,拿不定主意。
如果是单表的话 实体类是不错的 遇到多表的话难不成再建一个多表的实体类? 少个字段多个字段那岂不是要创建多个差不多的实体?? 这样做很显然太死板了
有些朋友就想到如果是多表查询 那就返回数据集(Dataset),这也许是大家比较认同的办法吧,可是又感觉使用了弱类型的数据集不那么的OO
恩,为了解决这个问题 那就还是用实体类吧 在数据库里创建个视图 按照视图来创建实体类(这里有可能说的不妥,一般是先建数据模型最后才生成数据库,申明下呵呵) 这样做应该也还不错所以想问问大家的意见 一般大家是怎么做的呢?? 求大虾指教
纠结的我头发都白了
如果是单表的话 实体类是不错的 遇到多表的话难不成再建一个多表的实体类? 少个字段多个字段那岂不是要创建多个差不多的实体?? 这样做很显然太死板了
有些朋友就想到如果是多表查询 那就返回数据集(Dataset),这也许是大家比较认同的办法吧,可是又感觉使用了弱类型的数据集不那么的OO
恩,为了解决这个问题 那就还是用实体类吧 在数据库里创建个视图 按照视图来创建实体类(这里有可能说的不妥,一般是先建数据模型最后才生成数据库,申明下呵呵) 这样做应该也还不错所以想问问大家的意见 一般大家是怎么做的呢?? 求大虾指教
纠结的我头发都白了
解决方案 »
- 当触发到datagridview的dataerror事件后,如何关闭Form的窗口?
- C#如何判断整形变量不为空
- c#执行关机
- 使用graphics类画坐标系的问题
- 请问notifyIcon1的用法
- MDI窗体问题
- 一个程序的图标问题
- 手机运行linux
- datagridview导出为xml文件
- 吐血求DunDas Chart for windows Forms 3.5解密版或下载地址!
- “System.Data.DataRow”不包含“Columns”的定义,并且找不到可接受类型为“System.Data.DataRow”
- webBrowser怎样才能加载IE的加载项?比如密码输入的加载项?明明IE可以输入,webBrowser就不能输入
反之用实体类 。
我们公司的项目一直用的实体类 对于楼主说的 多表查询 一般是通过关联多次查询的 虽然查询效率没dataset好 单感觉维护更好
其他的复杂查询用DataTable
没必要全部追求ORM
如果你全部追求ORM,给你个需求:行转列要查询出数据来,你怎么做?ORM遇到问题了。DataTable 可以解决问题
这个估计是说错了。
小点的项目(10W以下)。你用实体类差不多。
大点的项目(40w以上)怎么也得有个自定义查询,动态SQL哪个大点项目没有。
大点的项目。查询至少关联三四个表。一更新也至少几个表。三层几乎没有啥用。
但是实体类不能够批次多条的像底层传输数据。
所以在大数据多条的时候可以用强类型的dataset
很多情况要反oo设计,
有几个表,
就在lisT<实体> l 里add 几个 [实体]了。
(而不止是一张表,而是多表(可能10张),而且也不确定有张表。)
那要建这样的实体可不容易。
但是我们要的是数据:
且并不是要实体。
所以用 table 这类数据结构了, 来存放最好不过了, 比如 DataSet
要么自已定义一个动态表格类。 可以继承于DataSet ,
并增加一些你要的功能。
不需要映射到实体,比如一些报表展示。映射到实体有个问题,就是稍微有点变化,都要修改实体,比如报表加一列,报表减一列之类的。但对于一些涉及编辑、多功能的地方,最好返回实体集合。
但这个还有一个问题,就是得象java一样建立一个数据处理中心,
否则,返回实体实际没有任何意义。
对象的好处在于永远只有一份,无论做多少筛选操作编辑查询,永远只有一份。
不象datatable,datareader,会复制很多份。
其实在管理中,你这样的观点我是非常的反对的。总有自己的观点吧。哲学害死人。在实际中,做外包的用datatable这种弱类型的开发快,不涉及到太多维护的话。在我刚毕业出来基本上通过客户验收就没有多少维护了.这样的项目用实体类那相当麻烦,得不偿失。
如果你的项目涉及到长期运营维护,最好还是花多点时间用一些框架或者自己写,用实体类(强类型)这样维护的成本小,也可以为以后升级减少一些麻烦。