下面看一个例子:
现在有一个用户信息的表:E-R图如下:
要实现该表的数据库新增、修改、查询功能,需要实现下面两个业务类:
- using Csla;
- using IF.CslaCore;
- using IF.OrmCore.DataSchema;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace IF.SysUser.Business
- {
- [Serializable]
- [TableClass(FriendlyName="用户信息表",TableName="SYS_USER")]
- public class SysUser : IfBusiness<SysUser>
- {
- private static readonly PropertyInfo<string> SUR_IDProperty = RegisterProperty<string>(c => c.SUR_ID);
- [DisplayName("SUR_ID")]
- [FieldDescription(IsPrimaryKey=true,ColumnName="SUR_ID",FriendlyName="SUR_ID",NeedUpdate=true)]
- public string SUR_ID { get; set; }
- private static readonly PropertyInfo<string> UserNameProperty = RegisterProperty<string>(c => c.UserName);
- [DisplayName("登录名")]
- [FieldDescription(ColumnName="SUR_USERNAME",FriendlyName="登录名",NeedUpdate=true)]
- public string UserName { get; set; }
- private static readonly PropertyInfo<string> NameProperty = RegisterProperty<string>(c => c.Name);
- [DisplayName("姓名")]
- [FieldDescription(ColumnName="SUR_NAME",FriendlyName="姓名",NeedUpdate=true)]
- public string Name { get; set; }
- private static readonly PropertyInfo<string> PasswordProperty = RegisterProperty<string>(c => c.Password);
- [DisplayName("密码")]
- [FieldDescription(ColumnName="SUR_PASSWORD",FriendlyName="密码",NeedUpdate=true)]
- public string Password { get; set; }
- private static readonly PropertyInfo<string> LoginMacProperty = RegisterProperty<string>(c => c.LoginMac);
- [DisplayName("登录Mac地址")]
- [FieldDescription(ColumnName="SUR_LOGIN_MAC",FriendlyName="登录Mac地址",NeedUpdate=true)]
- public string LoginMac { get; set; }
- private static readonly PropertyInfo<string> LoginIPProperty = RegisterProperty<string>(c => c.LoginIP);
- [DisplayName("登录IP")]
- [FieldDescription(ColumnName="SUR_LOGIN_IP",FriendlyName="登录IP",NeedUpdate=true)]
- public string LoginIP { get; set; }
- private static readonly PropertyInfo<DateTime?> LoginTimeProperty = RegisterProperty<DateTime?>(c => c.LoginTime);
- [DisplayName("登录时间")]
- [FieldDescription(ColumnName="SUR_LOGIN_TIME",FriendlyName="登录时间",NeedUpdate=true)]
- public DateTime? LoginTime { get; set; }
- private static readonly PropertyInfo<DateTime?> LogoutTimeProperty = RegisterProperty<DateTime?>(c => c.LogoutTime);
- [DisplayName("登出时间")]
- [FieldDescription(ColumnName="SUR_LOGOUT_TIME",FriendlyName="登出时间",NeedUpdate=true)]
- public DateTime? LogoutTime { get; set; }
- private static readonly PropertyInfo<DateTime?> LoginFailTimeProperty = RegisterProperty<DateTime?>(c => c.LoginFailTime);
- [DisplayName("登录失败时间")]
- [FieldDescription(ColumnName="SUR_LOGIN_FAIL_TIME",FriendlyName="登录失败时间",NeedUpdate=true)]
- public DateTime? LoginFailTime { get; set; }
- private static readonly PropertyInfo<Int32?> LoginFailCountProperty = RegisterProperty<Int32?>(c => c.LoginFailCount);
- [DisplayName("登录失败次数")]
- [FieldDescription(ColumnName="SUR_LOGIN_FAIL_COUNT",FriendlyName="登录失败次数",NeedUpdate=true)]
- public Int32? LoginFailCount { get; set; }
- private static readonly PropertyInfo<bool?> LockFGProperty = RegisterProperty<bool?>(c => c.LockFG);
- [DisplayName("是否锁定")]
- [FieldDescription(ColumnName="SUR_LOCK_FG",FriendlyName="是否锁定",NeedUpdate=true)]
- public bool? LockFG { get; set; }
- private static readonly PropertyInfo<bool?> DisableFGProperty = RegisterProperty<bool?>(c => c.DisableFG);
- [DisplayName("是否有效")]
- [FieldDescription(ColumnName="SUR_DISABLE_FG",FriendlyName="是否有效",NeedUpdate=true)]
- public bool? DisableFG { get; set; }
- #region 通用字段
- private static readonly PropertyInfo<DateTime?> CreateTimeProperty = RegisterProperty<DateTime?>(c => c.CreateTime);
- [DisplayName("创建时间")]
- [FieldDescription(ColumnName="CreateTime",FriendlyName="创建时间",NeedUpdate=true)]
- public override DateTime? CreateTime { get; set; }
- private static readonly PropertyInfo<DateTime?> LastUpdateTimeProperty = RegisterProperty<DateTime?>(c => c.LastUpdateTime);
- [DisplayName("***修改时间")]
- [FieldDescription(ColumnName="LastUpdateTime",FriendlyName="***修改时间",NeedUpdate=true)]
- public override DateTime? LastUpdateTime { get; set; }
- public override void SetPrimaryKey(string key)
- {
- SUR_ID = key;
- }
- #endregion
- }
- [Serializable]
- public class SysUserList : IfBusinessList<SysUserList, SysUser>
- { }
- }
现在就可以工作了:
全表检索数据方法:
- SysUserList selData = SysUserList.Fetch();
向数据库新增一条数据:
- SysUser.Business.SysUser user = new SysUser.Business.SysUser();
- user.UserName= "inaction";
- user.Name = "流砂";
- user.Password= "superman";
- selData.Add(user);
- selData.Save();
向数据库修改数据:
- var user = SysUserList.Fetch(c => c.UserName == "inaction");
- user.Password = "123456";
- SysUserList list = new SysUserList { user };
- list.Save();
以上代码就实现了对密码的修改。
特别说明:目前IF 只能通过SysUserList对象的Save方法保存数据。以后会实现通过业务类自身Save方法保存数据。