您的位置:首页 > 其它

一个基于封装CSLA框架后,设计业务类的例子:User

2008-06-26 16:54 561 查看
/// <summary>
/// 用户
/// </summary>
[Serializable()]
[Phenix.Core.Data.MapperClass("PH_User", CheckDirtyOnUpdate = true)]
[Phenix.Core.Log.PermanentExecuteActionLog(Phenix.Core.Log.PermanentExecuteAction.UpdateAndDelete)]
[Phenix.Core.Log.PermanentRenovateLog]
public class User : Phenix.Business.BusinessBase<User>
{
#region 属性

public InvestRoles InvestRoles
{
get
{
return GetDetail<InvestRoles, InvestRole>();
}
}

[Phenix.Core.Data.MapperField(ColumnName = "US_ID", IsPrimaryKey = true)]
private long _id = Sequence.NextValue();
/// <summary>
/// 主键
/// </summary>
public long Id
{
get { return _id; }
}

private static PropertyInfo<string> UserNameProperty =
RegisterProperty<string>(typeof(User), new PropertyInfo<string>("UserName", "姓名"));
[Phenix.Core.Data.MapperField(ColumnName = "US_Name", NeedUpdate = true, CheckDirtyOnUpdate = true)]
private string _userName = UserNameProperty.DefaultValue;
/// <summary>
/// 姓名
/// </summary>
public string UserName
{
get
{
return GetProperty<string>(UserNameProperty, _userName);
}
set
{
SetProperty<string>(UserNameProperty, ref _userName, value);
}
}

private static PropertyInfo<string> UserNumberProperty =
RegisterProperty<string>(typeof(User), new PropertyInfo<string>("UserNumber", "工号"));
[Phenix.Core.Data.MapperField(ColumnName = "US_UserNumber", NeedUpdate = true)]
private string _userNumber = UserNumberProperty.DefaultValue;
/// <summary>
/// 登录工号
/// </summary>
[Indexable(IndexModeEnum.IndexModeOnDemand)]
public string UserNumber
{
get
{
return GetProperty<string>(UserNumberProperty, _userNumber);
}
set
{
SetProperty<string>(UserNumberProperty, ref _userNumber, value);
}
}

private static PropertyInfo<string> PasswordProperty =
RegisterProperty<string>(typeof(User), new PropertyInfo<string>("Password", "口令"));
[Phenix.Core.Data.MapperField(ColumnName = "US_Password", NeedUpdate = true)]
private string _password = PasswordProperty.DefaultValue;
/// <summary>
/// 登录口令
/// </summary>
public string Password
{
get
{
return GetProperty<string>(PasswordProperty, _password);
}
set
{
SetProperty<string>(PasswordProperty, ref _password, value);
}
}

#endregion

#region 过程

#region Validation Rules

protected override void AddBusinessRules()
{
base.AddBusinessRules();
this.ValidationRules.AddRule<User>(NoDuplicates, UserNumberProperty);
}

private static bool NoDuplicates(User target, Csla.Validation.RuleArgs e)
{
Users parent = (Users)target.Parent;
if (parent != null)
{
var query = from item in parent
where item.UserNumber == target.UserNumber && !ReferenceEquals(item, target)
select item;
if (query.Count<User>() != 0)
{
e.Description = "登录工号不允许重复";
return false;
}
}
return true;
}

#endregion

#region Authorization Rules

#endregion

#endregion
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐