public interface IUsersRepository : IPager
{
///
/// Post list
///
/// Order expression
/// Filter expression
/// Records to skip
/// Records to take
/// List of users
IEnumerable Find(int order=0,string filter="", int skip = 0, int take = 10);
///
/// Get single post
///
/// User id
/// User object
User FindByName(string name);
///
/// Add new user
///
/// Blog user
/// Saved user
User Add(User user);
///
/// Update user
///
/// User to update
/// True on success
bool Update(User user);
///
/// Save user profile
///
/// Blog user
/// True on success
bool SaveProfile(User user);
///
/// Delete user
///
/// User ID
/// True on success
bool Remove(string userName);
}
二、倉庫的實(shí)現(xiàn)和綁定
主要方法:Membership的中的User和我們自定義的不一樣,所以存在一個轉(zhuǎn)換
public class UsersRepository : IUsersRepository
{
///
/// The _user list
///
private List _userList = new List();
///
/// The _page item count
///
private int _pageItemCount;
///
/// The _display page
///
private int _displayPage;
///
/// The _usercount
///
private int _usercount;
///
/// The _total item
///
private int _totalItem;
///
/// 標(biāo)記是否有查詢條件 沒有的話則返回全部數(shù)目
///
private Func _func;
///
/// Gets or sets the users.
///
/// The users.
public List Users
{
get
{
int count;
var usercollection = Membership.GetAllUsers(0, 999, out count);
if (count == _usercount) return _userList;
_usercount = count;
var members = usercollection.Cast().ToList();
foreach (var membershipUser in members)//這里存在一個轉(zhuǎn)換
{
_userList.Add(new User
{
Email = membershipUser.Email,
UserName = membershipUser.UserName,
//roles password
});
}
return _userList;
}
set { _userList = value; }
}
//查詢
public IEnumerable Find(int order = 0, string filter = "", int skip = 0, int take = 10)
{
if (take == 0) take = Users.Count;
//過濾
_func = string.IsNullOrEmpty(filter) ? (Func) (n => n.UserName != "") : (n => n.UserName.Contains(filter));
var users = Users.Where(_func).ToList();
//更新總數(shù)目
_totalItem = users.Count;
users = order == 0 ? users.OrderBy(n => n.UserName).ToList() : users.OrderByDescending(n => n.UserName).ToList();
return users.Skip(skip).Take(take);
}
///
/// 每頁項(xiàng)目數(shù)
///
/// The page item count.
public int PageItemCount
{
get
{
if (_pageItemCount == 0)
{
_pageItemCount = ProtalConfig.UserPageItemCount;
}
return _pageItemCount;
}
set { _pageItemCount = value; }
}
///
/// 總頁數(shù)
///
/// The totoal page.
public int TotoalPage
{
get
{
var page = (int) Math.Ceiling((double) TotalItem/PageItemCount);
return page==0?1:page;
}
}
///
/// 顯示的頁數(shù)
///
/// The display page.
public int DisplayPage
{
get
{
if (_displayPage == 0)
{
_displayPage = ProtalConfig.UserDisplayPage;
}
return _displayPage;
}
set { _displayPage = value; }
}
///
/// 滿足條件的總數(shù)目 保持更新
///
/// The total item.
public int TotalItem
{
get
{
if (_func == null)
_totalItem = Users.Count;
return _totalItem;
}
set { _totalItem = value; }
}
}