日期:2014-05-19  浏览次数:20758 次

初学三层结构问题
最近刚学三层结构,我划分了表示层(winform   公司项目要求),逻辑层,数据访问层,然后加了一个封装数据库表的实体类(不太清楚概念)。
但是我觉得在逻辑层中,几乎是空的,除了创建数据访问层中某个实例,没有其他的操作,然后我在各层之间用DataTable来传递数据,但是我在数据访问层中获得的table是与数据库对应的,这样的话,我在表示层上要怎么处理?比如说,我要隐藏这个数据中的某一个列。需不需要在表示层上定义一个固定的表,然后再用从数据库中获得的数据去填充数据?还是直接将返回的数据设置为datagrid的数据源?

------解决方案--------------------
1.表模式
2.数据模式
3.对象模式

你用的表模式(NET中用的比较多 应为有DataSet等),实体类在对象模式中用的较多
就是把数据表对象化~ ,其实实体类对你来说没什么意义~
逻辑层 还是有用的~ UI层 和Access 层的逻辑 尽量移到 逻辑层中~ 小项目体现不出 ,业务较多的比较明显(不过大家好像都习惯把逻辑放在存储过程中 呵呵~)

------解决方案--------------------
我有设置了一个entity层,用来封装对数据库表中每个属性值的获取和设置?
然后在表现层、逻辑层和数据层都引用这个entity层
不知道和您说的model是不是一回事?

土问一句:这样的话,是不是查询返回结果时是返回一个对象集合,然后通过IList来绑数据?
------------------------------------------
两个差不多是同一个东西.

如果抛弃掉逻辑层,可以考虑直接用DataSet了,开发会更快,如果定义了entity class,应该是用的datareader吧,速度会快些,但扩展性的优势因为没有bll化为乌有。

如果你用实体类,那么返回的结果是对象集合。
------解决方案--------------------
举个例子吧,说的更清楚一点.

Model:把数据事例化
using System;
namespace CodematicDemo.Model.Folder
{
/// <summary>
/// 实体类cdcurr 。(属性说明自动提取数据库字段的描述信息)
/// </summary>
public class cdcurr
{
public cdcurr()
{}
#region Model
private string _curr;
private string _name;
private decimal _rate;
private decimal _rate1;
private string _ybitem;
private string _yjitem;
private string _ysitem;
private string _yusitem;
private string _yfitem;
/// <summary>
///
/// </summary>
public string curr
{
set{ _curr=value;}
get{return _curr;}
}
/// <summary>
///
/// </summary>
public string name
{
set{ _name=value;}
get{return _name;}
}
/// <summary>
///
/// </summary>
public decimal rate
{
set{ _rate=value;}
get{return _rate;}
}
/// <summary>
///
/// </summary>
public decimal rate1
{
set{ _rate1=value;}
get{return _rate1;}
}
/// <summary>
///
/// </summary>
public string ybitem
{
set{ _ybitem=value;}
get{return _ybitem;}
}
/// <summary>
///
/// </summary>
public string yjitem
{
set{ _yjitem=value;}
get{return _yjitem;}
}
/// <summary>
///
/// </summary>
public string ysitem
{
set{ _ysitem=value;}
get{return _ysitem;}
}
/// <summary>
///
/// </summary>
public string yusitem
{
set{ _yusitem=value;}
get{return _yusitem;}
}
/// <summary>
///
/// </summary>
public string yfitem
{
set{ _yfitem=value;}
get{return _yfitem;}
}
#endregion Model

}
}