NHibernate实战详解(一)领域模型设计(二)
}
private PurchaseTime _purchaseTime = new PurchaseTime();
public virtual PurchaseTime PurchaseTime
{
get
{
return _purchaseTime;
}
set
{
_purchaseTime = value;
}
}
private ICollection _purchaseTasks = new HashedSet();
public virtual ICollection PurchaseTasks
{
get
{
return _purchaseTasks;
}
set
{
_purchaseTasks=value;
}
}
///
/// 指派任务
///
///
public virtual void AppointTask(PurchaseTask task)
{
if (ContainsTask(task))
{
if (TaskProgress == 0)
{
RemoveTask(task);
}
else
{
throw new Exception("任务已经开始,无法重新指派!");
}
}
if (task.Principal != 0)
{
task.PurchaseOrder = this;
_purchaseTasks.Add(task);
}
}
public virtual void ClearTask()
{
foreach (PurchaseTask item in _purchaseTasks)
{
item.PurchaseOrder = null;
}
_purchaseTasks.Clear();
}
public virtual void RemoveTask(PurchaseTask task)
{
task.PurchaseOrder = null;
_purchaseTasks.Remove(task);
}
public virtual bool ContainsTask(PurchaseTask task)
{
return _purchaseTasks.Contains(task);
}
///
/// 任务进度
/// 0未开始
/// 1完成
/// 2完成
/// 3完成
///
public virtual decimal TaskProgress
{
get;
set;
}
}
任务类,在这个类的最后我们已经看到override比较对象相等的方法了。
public class PurchaseTask : DomainBase
{
private PurchaseOrder _purchaseOrder = new PurchaseOrder();
///
/// PurchaseOrder
///
public virtual PurchaseOrder PurchaseOrder
{
get { return _purchaseOrder; }
set { _purchaseOrder=value; }
}
///
/// 任务类型
/// 类型1 类型2 类型3
///
public virtual decimal TaskType
{
get;
set;
}
///
/// 任务负责人ID
///
public virtual decimal Principal
{
get;
set;
}
///
/// 是否处理
///
///
public virtual bool IfHandle()
{
if (this.PurchaseOrder.TaskProgress ==GetNeedHandleProgress(this.TaskType))
{
return true;
}
return false;
}
///
/// 获取需要处理的进度步骤
///
///
///
public virtual decimal GetNeedHandleProgress(decimal tasktype)
{
switch (tasktype.ToString().ToLower())
{
case "1":
return 0;
case "2":
return 2;
case "3":
return 3;
default:
throw new Exception("任务类型错误!无法定位需要处理的进度。");
}
}
public override bool Equals(object obj)
{
PurchaseTask task = obj as PurchaseTask;
if (task == nu