大家好,今天来为大家解答C#知识通过实体类实现UI和数据访问类之间的参数传递这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
前面了解到,为了简化UI层的数据复杂度,将数据访问代码从UI层拆分出来,并进行了对比测试:
《C#知识|使用分层的思想实现数据存储入库(实例)》;
上面的练习虽然已经完成了解耦,只传递参数,但是传递的参数太多,很容易出错。接下来,UI层与数据访问类交互时参数过多如何处理。
01 方法参数定义的基本原则
当我们写方法的时候,最好将方法的参数控制在1-4个参数,这样是最优的。
如果UI和数据访问类之间的交互参数过多,可以使用【实体类】来替换过多的参数。
02 引入实体类概念
实体类是用于表示数据实体的类。
例如,数据表中的一条数据是一个实体,数据表是实体的集合。
03 实体类的设计
实体类在设计时一般只包含属性,属性与数据表的列之间存在一对一的映射关系。
注意事项:
1、为了方便与程序连接,在设计数据表时,数据表的列名最好遵循Pascal命名法。
2 由于一一对应,实体类至少应具有与数据表中所需列数一样多的属性。
3、注意数据表中的数据类型和实体类中的数据类型。
常见数据库类型与C#数据类型的对应表如下:
数据库数据类型
C# 数据类型
整数
整数
字符类型
(char、varchar、nvarchar、文本.)
细绳
浮点类型
双倍的
小日期时间
日期时间
4、实体类的数量:一般来说,有多少个数据表就有多少个实体类。当然,可以根据项目的实际需要灵活添加扩展。
5个实体类函数:
5.1 封装数据:当需要调用项目中的其他对象时,将参数封装到实体类的属性中。
5.2 传递数据:通过实体类将数据传递给被调用者,也可以反向操作。
6、实体类命名:实体类的名称应与数据表的名称一致。这个习惯在复杂的项目中会非常方便。
04 实例说明
4.1。将实体类文件夹添加到项目中,然后添加实体类:Account.cs
尖端:
在实际项目中,通常是先添加实体类,然后再添加数据访问类和其他业务。
C#中的数据访问类命名约定:通常是实体类名+Service
C#中业务逻辑类命名规范:通常是实体类名+Manager
4.2.实体类代码
一开始可以手动输入代码来实现练习,稍后会生成适合实际项目的专用工具。
Account.cs代码如下:
namespace LeiGongNotes2{//summary///Account实体类////summarypublic class Account {//string accountName, string accountContent, int Originality, int TypeIdpublic int AccountId { get;放; }公共字符串帐户名称{ get;放; }公共字符串AccountContent { 获取;放; }public int 原创性{ get;放; }public int TypeId { 获取;放; } }}
4.3.通用数据访问类
通用数据访问类AccountService.cs代码为:
//相同引用using using System.Data;using System.Data.SqlClient;namespace LeiGongNotes2{//summary///账户数据访问类////summarypublic class AccountService {///summary///添加账户(通过实体类作为参数) ////summary///param name=’account’account object/param///returns/returnspublic int AddAccount(Account account) {//定义SQL语句字符串sql=’insert into Account(AccountName ,AccountContent,原创性,TypeId)’; sql +=#34; value(‘{account.AccountId}’,'{account.AccountContent}’,{account.originality},{account.TypeId})’;//执行SQL语句return SQLHelper.Update(sql); } }}
4.4.通用数据访问类
通用数据访问类SQLHelper.cs的代码与之前的练习一致,没有变化。您可以点击跳转查看。
4.5.代码运行效果
05 实体类优点
通过示例练习与之前没有实体类的练习对比,我们可以发现实体类有以下优点:
5.1.方法调用之间的参数传递变得非常简化。
5.2.我们使用起来非常方便。 UI层只需将数据封装成实体类,数据访问类只需解析实体属性。
5.3.实体类的使用使得方法调用接口非常稳定并且易于修改。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/115149.html
用户评论
命该如此
这个分享真棒!我一直都想找到一个更优雅的方法来实现 UI 和数据访问类间的参数传递,以往总是感觉用字符串拼接太繁琐了。实体类这种方式清晰明了,而且比较好维护。感谢你的思路!
有8位网友表示赞同!
寻鱼水之欢
C# 真是个强大的语言!这篇博文讲解得很细致,让我对实体类在 C# 中的作用有了更深入的理解。之前我也曾尝试过类似的方法,但是总是卡在一些细节上,这下看懂了,以后可以用这个技巧去优化我的代码了。
有7位网友表示赞同!
此刻不是了i
我感觉实体类这种方法对于大型项目来说效果更好,可以提高代码的可读性和可维护性,避免因为数据格式不一致导致的各种问题。当然,对于小型项目来说,用字符串拼接或许也还是可以接受的。
有19位网友表示赞同!
陌然淺笑
这个技巧确实很实用,以前总是担心 UI 和数据访问类间的接口会过于复杂,实体类这种方法简化了交互,让我更容易理解代码逻辑
有18位网友表示赞同!
温柔腔
我觉得文章中的代码示例有点晦涩难懂,如果能提供一些更具体的例子说明实体类的使用场景,对于初学者来说更能受益匪浅。
有15位网友表示赞同!
你tm的滚
虽然实体类是比较好的方法,但有时候用得太频繁还是会增加项目复杂度,需要根据实际情况来选择合适的方案。我个人认为,对于简单的数据交互,字符串拼接或许更简洁直接吧。
有12位网友表示赞同!
作业是老师的私生子
学习到了!之前一直使用过时的传参方式,现在终于明白实体类可以带来如此清晰高效的解决方案,感谢作者分享!
有20位网友表示赞同!
咆哮
C# 的各种特性都让人眼前一亮!这个方法太棒了,确实能将 UI 和数据访问类的交互变得更加清晰和简洁。
有20位网友表示赞同!
裸睡の鱼
这篇文章对我来说很有启发,之前我从未想过可以用实体类来传递参数,这种方法真是太巧妙了!可以避免很多低级错误,提高代码规范化水平。
有6位网友表示赞同!
面瘫脸
这个方案确实很优雅,但要注意的是,当数据结构比较复杂时,需要仔细考虑实体类的设计,否则可能会造成反效果。
有13位网友表示赞同!
良人凉人
我更倾向于使用中间层来进行数据处理和转换,这样可以更加明确地分离业务逻辑,而且对代码维护也更有利。这个方法仅仅解决传递问题,对于复杂的交互场景可能显得不够完善。
有5位网友表示赞同!
七夏i
学习新事物真是太棒了!这篇博文让我对 C# 的可能性有了更深的理解。实体类这种方式确实能让程序更健壮、更易维护
有17位网友表示赞同!
夏日倾情
我觉得这个方法在实际项目中应用起来还是挺方便的,可以有效地缩短开发时间。尤其对于团队开发来说,这个方法可以让各个模块之间的数据交互更加清晰和高效。
有13位网友表示赞同!
逃避
虽然这个方法很棒,但是如果实体类定义过于复杂,可能会增加代码的理解难度. 需要根据项目的实际需求来权衡利弊
有17位网友表示赞同!
墨城烟柳
这篇文章写的真好,讲得通俗易懂! 我以前也经历过因为数据传递不规范导致的混乱,现在终于找到了解决方案了。感谢作者用心分享!
有7位网友表示赞同!
浅笑√倾城
C# 代码编写真的越来越简单了! 实体类这种方法让我的代码更加清晰、易读性提升了很多,以后我会多使用这个方法进行参数传递。
有19位网友表示赞同!
暖栀
之前我一直觉得 C# 的数据传递比较繁琐复杂,现在学习到了这个方法后,发现原来还有这么好的解决办法。真是太棒了!
有18位网友表示赞同!
微信名字
我觉得这篇文章可以补充一些关于实体类在实际项目中如何设计的讲解,比如针对不同类型的业务场景如何选择合适的实体类属性等等。
有5位网友表示赞同!