在項目中,我們添加一個賬戶,用戶名或者登錄名等可能要求不能重復,方法如下:
參考項目中的這個寫法:
/// <summary>
/// 賬戶不能重復
/// </summary>
/// <param name="account">賬戶值</param>
/// <param name="keyValue">主鍵</param>
/// <returns></returns>
public bool ExistAccount(string account, string keyValue)
{
var expression = LinqExtensions.True<UserEntity>(); expression = expression.And(t => t.Account == account); if (!string.IsNullOrEmpty(keyValue)) { expression = expression.And(t => t.UserId != keyValue); } return this.BaseRepository().IQueryable(expression).Count() == 0 ? true : false; }
修改用EF寫法:
/// <summary>
/// 賬戶不能重復
/// </summary>
/// <param name="account">賬戶值</param>
/// <param name="keyValue">主鍵</param>
/// <returns></returns>
public bool ExistAccount(string account, string keyValue = "")
{
var data=db.Sys_User.Where(t => t.Account == account); if (!string.IsNullOrEmpty(keyValue)) { data = data.Where(t => t.UserId != keyValue); } return data.Count() == 0 ? true : false; }
傳遞keyValue,用於排除自我,這種情況用在登錄用戶等會后去修改自己的用戶名,在修改過程中,用戶突然改變想法還是用老的用戶名,這時候如果不排除自我,會顯示用戶名已經存在,所以加了一個
if (!string.IsNullOrEmpty(keyValue))
{
data = data.Where(t => t.UserId != keyValue);
}
這個方法!