C#开发中常用的一些分层思想,和数据库连接字符串的使用
内容目录
一、连接字符串在Appconfig中的使用和一些使用注意事项
二、实体类和数据访问类的抽取和一些简单说明
三、项目分层和分层思想
文本内容
一、连接字符串在Appconfig中的使用和一些使用注意事项
1、使用步骤:
第一:右键添加新建项,添加一个应用程序配置文件App.config
第二:添加到根目录,不需要修改文件名,内容都写到connectionStrings节点之内,节点名称必须写对
示例代码:
第三:引入System.Configuration命名空间
第四:连接字符串:string ConnString=ConfigurationManager.ConnectionStrings[“connString(App.config中name的值)”].ToString();
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="connString" connectionString ="Server=CHINA-20181227Q\server;DataBase=SMDB;Uid=sa;Pwd=123456"/>
</connectionStrings>
</configuration>
2、连接失败的一些可能问题:
- App.config文件被修改,没有放在程序根目录下
- <add name=“这里写错(多加空格、字母等写错)” connectionString=“和示例代码形同结构”
- 没有放在 <connectionStrings 节点里边,或者节点名称被写错等等
二、实体类和数据访问类的抽取和一些简单说明
1、实体类的概念: 在项目中添加的一些只有属性的类,并且类中的属性名和数据类型和数据库表中的字段名称和数据类型一致,类名和表明一样,属性名称和字段名称一样,数据类型和表中字段的数据类型一样。另外数据库中的char、text、nvarchar等都对应着C#中的字符串string类型
数据库中的students数据表:
对应实体类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace text3
{
[Serializable]//可序列化标记,以后需要序列化存储图片信息
public class Students
{
public int StudentId { get; set; }
public string StudentName { get; set; }
public string Gender { get; set; }
public DateTime Birthday { get; set; }
public string StudentIdNo { get; set; }
public string StuImage { get; set; }
public int Age { get; set; }
public string PhoneNumber { get; set; }
public string StudentAddress { get; set; }
public int ClassId { get; set; }
}
}
2、实体类应该添加多少个问题:
- 实体类本质是一张表的结构的映射
- 一般有多少张表就应该添加多少个实体类,实现表和实体对象的一一映射关系,但是为了程序中数据处理方便,还需要添加一些和表不是映射关系的实体类,叫做扩展实体类
3、为什么要使用实体类?
原因一:
- 开发的数据库管理软件,实质上是处理数据的。
- 从C#角度出发,C#是完全的面向对象的编程语言,处理的任何数据都应该有相应的实体(对象)
- 从数据库角度出发,数据库中的表就是一个实体集,表中的每条记录都对应着一个对象
- C#中的一条数据也可以理解为一个对象,这样数据库和C#就能产生联系
原因二:
- 根据面向对象编程的六大原则,需要将数据展示和用户操作、业务逻辑、数据操作分离,实体类在这些层中就起到封装和传递数据的作用
- 如果在这些层中不用实体类传递数据,那么会导致参数太多,接口麻烦且不稳定,还有处理起来比较麻烦
4、使用实体类的好处:
- 更好的体现OOP封装的特性:数据不零散
- 调用方便:不必关心内部的结构
- 不同的对象间传递数据,起到隔离的作用:调用者不必关心数据的来处,传递者不必担心数据如何使用(调用者:数据往哪里来的;传递者:数据给你,随便你怎么用)
5、数据访问类:
- 为什么要使用数据访问类:数据访问类针对的是特定的实体类,封装对应数据的操作,和实体类分离职责(也就是实体类的数据都怎么用)
- 数据访问类和实体类其实是一个类被拆成属性和行为,实体类是属性,数据访问类是行为,这样做避免了传递数据的时候早成不必要的资源浪费,必要时候也可以合并成一个
- 实体类:封装和传递数据;数据访问类:封装实体类对应数据的操作
- 一般情况:实体类和数据访问类一一对应,但是为了数据处理方便也可以扩展
- 数据访问类的书写建议:实体类名+Service
三、项目分层思想
1、项目基本三层思想:面向对象编程的六大原则
2、项目三层:
UI界面层:封装和展示数据
业务逻辑层:任务一:封装一些特定算法和逻辑处理(不包括数据操作和UI操作);任务二:传递任务,UI不能直接和数据交互(建议命名:实体类名+manager后缀)
数据操作层:包括实体类和数据访问类,专门处理数据
**3、其他分层都是基于这三层合并或者添加:**比如:两层是数据访问层的UI层等
,