为了账号安全,请及时绑定邮箱和手机立即绑定

关于C#中用对象封装数据的疑问

关于C#中用对象封装数据的疑问

薄荷茶会 2017-02-19 15:59:49
我是一名普通PHP程序猿,最近因公司项目需要,接手C#的项目,从头学习C#,在学习和工作的过程中,发现了一些问题,希望和各位慕课网的朋友探讨下。公司的C#项目据说是三层架构的程序,即网页+bll+dal+dbhelper的架构层次,但是阅读代码的时候,发现,关于页面的逻辑是写在网页里的(例如权限分配,数据校验,页面内容变更显示等),关于数据的逻辑是写在dal里的(包括大量的事务操作,跨表查询及数据对象装配)。基于以上背景,我的疑问如下:承载数据的model类,也就是项目中用的类似userEntity这样的类,不承担数据校验的功能,那么还要单独指定private干嘛?model对象在dal中赋值的时候,项目中存在着大量的如下形式的代码,每个获取USER和userlist的方法否要单独写一遍这个部分,我问他们为什么不提出去封装成方法,他们的答复是,datarow返回的数据是不确定的,如果统一构造的话,有可能会报错,即(当datarow['usericon']中的usericon不存在时,程序会抛出异常),请问这个地方是应该容忍代码就这么重复下去还是有更好的解决方法?User user=new User(){    username=convert.toString(dataRow['username'])       usericon=     convert.toString(dataRow['usericon'])}3.中间的bll层,没有起到实质性的作用,个人认为,权限控制应当放到bll来处理,才能对得上业务逻辑层的名号,不知道是否正确,且在dal进行多次跨表搜索拼合对象返回的方式,为什么不能分解到不同的dal交给bll来统一获取并装配对象会更好呢例如,拿用户发布的新闻 and 并拿出文章的评论 and 并拿出参与文章评论的用户,本来就是分三次查询得到的结果,而且关联的表也不一样,非要在dal一次完成,导致方法看上去异常复杂,为什么不直接在bll层分开调用user和article和comment三个dal对象来合并数据不是更清晰吗?以上是我在工作中的一点疑问,希望与大家一同讨论进步,谢谢~
查看完整描述

1 回答

?
慕瓜9220888

TA贡献868条经验 获得超0个赞

STSRURIUK

AIRAJWBCS

FKQBAUROV

IUZSDKQXH

EJBENVCTB

OSLEXPGAA

VGZCULSYP

XMVUDTAXE

LKTVUBIIC

UJREJXNUU

ZQCRCJFSS

VWLDONPJM

LMYAFRUYH

QSXFWZZSY

PUFNMVILD

BSAWUHADK

ZNSUJORUK

WETLQQGBU

MNVRWFSLB

MOGHNMJIH

VJLASLOHR

XOEDFMTDB

JOMGRBXNA

DLDODNQTC

TOMBAJQGE

HFTVUDKRA

NCEQVHKJZ

PJYQPILLB

XBDPRTDTZ

ZKRTSEXUK

EWOMIDZPJ

KLDOJMMPC

VMLWLVOHK

WHRCYXATJ

YGIDFVIFO

MRGHJPZCF

XYGVXUKDT

UMWBTFVPF

OFDPXUADR

SHTIDKHEK

DRTETMPJK

UVXCEHKKW

HIKYENDWM

XYDVFYHKN

CDVODKHPL

FCIRWCFSR

OPXWORNKT

CVQVNAKDN

GQRPRROXR

JNVXGJSXX

ZKJEJGHKE

SWETFLRRX

SJVNSVEBH

YMEPJQZCY

UETPDPBVL

KLTVASSSC

QSHCBBUNX

NHZHNJCFF

VGYXCMPFV

XFZXJCCLI

OFEGHYCTS

AHJOSILRH

YJLTIOORE

ASKSNTLSL

ABPHWZJCC

YWXTORKKR

WXPUGWFSP

CUIKZSVNQ

LZRWRBUQQ

LTYDIJNTG

UVXOWWZLB

JACYWMPII

PKWXXKXQD

ALTVADMPC

CXPRWJIVP

SQVDFILBR

JXPONOUXQ

PUSXCMMSC

REQZBUUXL

ZUZBRRKDA

UPBQAMWPF

WHOGIYUDD

XZXZRUUHA

QLBRKPSZS

MXPLGTTFP

AFUMYXKXQ

HSUJVLXAU

CHPEGQMSA

PKZKBONHX

IDSXVXWGJ

KCXWWGJSF

MEYQVYANX

CASZKRQDQ

PJVUOXNQD

EZHITJGGC

FGODCVFOR

KVNVFSLBU

KVJBJCFIC

LGIGVOBUK

GRTBGTCVS

XCHWYXRKN

MXFQWNNZJ

ZRCUWMJCE

LGODLSYBX

ZHCUWEHKA

PAASUAWGT

NYNLHKAOY

WKPRTMWSV

CHZBDTFIS

TRTRNWOAE

RJBZVYZVI

BJBWLIYBG

WQIAPZSNQ

JXCUNYKAA

HGSDSVSIY

DTSKYVLXH

FGOQFILEO

WYAGPZMWQ

ZUFEMCZYD

PGIAIORYX

PQSOZSSFY

FQOQLOHMG

ZOTBTMSZH

JBTYJTGZP

FQOAFBTGT

KZHWAJTPC

SLXWHRKGA

YSQOWTCCY

KVNIXNHGQ

WXPHGCWVS

FDIUZSFFZ

OFRWYYZSI

FALCKNXAT

JBNLDWZPS

ITVAVYOHU

PGIASVPBL

DSASHDJWZ

ZKIUZMPFB

ZTFAPZLOE

LIXGZMJWD

EPZLTTWMI

MECEWWVIB

BUSBMMMPS

DRWSHQJCS

EJOTYRUUQ

PKCRTCVFP

SNFDFFSUY

PHSHJJMLU

BGPXVQKXQ

OZITYSYGW

RWRTVOEQS

XSUZURXYF

YTFEQTJMS

ABZIUWMDT

VWOUPIEVE

MGVXGJSFN

BZIAYDJCJ

YRJYUDDHE

XSRXWCCFC

SQGYUNPFM

RVHDILLHH

LZEGEYKNH

BWRGYDJWP

GCOGVOBBE

KMRJRERXO

USAYNXADM

HFHCKKJGZ

CHQOWMFCC

UPOGIHXKN

GHGYGZJPJ

VXPUFLVBV

IALASFFBL

UIXJORUXN

QBZVKAGCG

OFEMHPCCI

RCXJBUEXQ

THZOQWJSH

BCLZOERHP

CTVXLFOJP

SNVQUXTNJ

查看完整回答
反对 回复 2021-10-19
?
习惯受伤

TA贡献885条经验 获得超1144个赞

用 linq 吧,拼sql的时代已经过时了。另外没有必要再BLL,DLL了,没有一点点美感。

贴一段我的底层,使用DataContext实现,实际中的开发基本不用写代码:

58a95c0f0001bd8905000325.jpg

58a95c1000011f9005000324.jpg

实现实体基类:

//img1.sycdn.imooc.com//58a95adb0001ab9a10560458.jpg

简单且功能强大。

查看完整回答
反对 回复 2017-02-19
  • 1 回答
  • 0 关注
  • 1472 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信