五. 项目的分层定义和编码规范
1. 数据实体层的定义和编码规范
这一层主要定义类型化数据集的XML架构(XSD)。是数据库的内存表示,建立架构后代码由系统自动生成。
1) 添加数据集:添加à添加新项à数据集;
2) 定义数据表架构:
(1) 单表形式:从“服务器资源管理器”中将单表拖至设计界面,系统将自动生成表结构;
(2) 多表形式:
方法一.照上述方法生成多个表,然后手工添加表间关联(如果有的话);
方法二.照上述方法生成基本表,然后手工添加其他相关字段,组成一张表;
而他的XML格式这是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="AddressData" targetNamespace="http://tempuri.org/AddressData.xsd" elementFormDefault="qualified"
attributeFormDefault="qualified" xmlns="http://tempuri.org/AddressData.xsd" xmlns:mstns="http://tempuri.org/AddressData.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="AddressData" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="City">
<xs:complexType>
<xs:sequence>
<xs:element name="CityID" msdata:ReadOnly="true" msdata:AutoIncrement="true" type="xs:int" />
<xs:element name="Abbr" type="xs:string" />
<xs:element name="NameGuid" msdata:DataType="System.Guid, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
type="xs:string" minOccurs="0" />
<xs:element name="ProvinceID" type="xs:int" />
<xs:element name="Remark" type="xs:string" minOccurs="0" />
<xs:element name="Name" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
……
2. SQL层的定义和编码规范
这一层定义用于与数据库交互的SQL语句。
这一层负责生成用于操作数据库的SQL语句。根据要操作的数据实体层来分别的定义这一层要实现的方法,在本项目组中,我们一般只需要定义选择查询所需要的SQL语句。
这里的方法中所做的工作全部是拼装出一个用于实现所需求的功能的SQL语句。如:
public static string strGetLogonLog = "SELECT LogonLog.* FROM LogonLog";
public static string GetLogonLogByUserName(string userName)
{
return strGetLogonLog
+ " WHERE (UserName = N'" +userName+ "')";
}
3. 数据访问层的定义和编码规范
这一层负责操作数据库。
这一层负责对数据库进行各种操作。根据要操作的数据实体层来分别的定义这一层要实现的方法,在本系统中,一般要包括读取数据的方法和将数据更新回数据库的方法。
在这一层向上,数据将可能有两个流向:如果本模块有商务规则,数据将流向商务规则层;如果本模块没有商务规则,则数据将流向商务界面层。
编码示例如下:
public MenuData GetMenu()
{
MenuData ds = new MenuData();
DatabaseExecute dbExec = new DatabaseExecute();
dbExec.GetData(ds.Menu,MenuSQL.strGetMenu);
return ds;
}
public void UpdateMenu(MenuData ds)
{
DataTableExtend dt = new DataTableExtend(ds.Menu,"Menu");
DatabaseExecute dbExec = new DatabaseExecute();
dbExec.ModifyDataBase(dt);
}<