现有表结构如下:
人员表:
工号 姓名 性别 职位代码 部门代码 ……
部门表:
部门代码 部门名称……外键关联
职位表:
职位代码 职位名称……外键关联
类设计:
第一种:
private string 工号
private string 姓名
private string 性别
private string 职位代码
private string 部门代码
第二种:
private string 工号
private string 姓名
private string 性别
private string 职位代码
private string 职位名称
private string 部门代码
private string 部门名称
现在主体是人员,对人的操作主要有与DATAVIEW的绑定显示,人的新增、更新、删除等操作,
请问人员类要怎么设计才能满足以上几个操作的要求?
第一种方法便于对人员的新增、更新及删除,
第二种方法便于对显示的操作,不需再作处理,显示到界面中就是直接是中文名称而不是代码啦。
虽然显示可以用如下SQL语句直接得到
select 人员表.*,部门表.部门名称,职位表.职位名称 from 人员表,部门表,职位表 where 人员表.部门代码=部门表.部门代码 and 人员表.职位代码=职位表.职位代码
但是还是想有一个方法类来实现,代码如下
public interface IBaseProcessor //IDAL ()
{
void Delete(baseClass baseInfo);
void Update(baseClass baseInfo);
void Append(baseClass baseInfo);
}
public baseClass //数据库MODEL
{
private string 工号
private string 姓名
private string 性别
private string 职位代码
private string 部门代码
...
}
public baseProcessor:IBaseProcessor //BLL (实现增删改)
{
//自己实现去
}
public newClass:baseClass //数据库MODEL派生 存放关联表字段信息(对于1对1 1对多 多对多)
{
private string 职位名称
private string 部门名称
...
}
public interface INewProcessor //IDAL 显示类接口
{
NewClassCollection Load();
//或者
DataTable Load();
}
public newProcessor:baseProcessor,INewProcessor // 显示类实现 BLL
{
//自己实现INewProcessor
}
这样加载显示的部分只要关心INewProcessor接口,并实现它即可
保存的过程中只要关心IBaseProcessor在baseProcessor中实现接口的方法去处理
由于newClass是baseClass继承下来,所以操作显示都没冲突。
只需创建newClass和newProcessor。