140 lines
3.5 KiB
C#
140 lines
3.5 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Linq.Expressions;
|
|||
|
|
using System.Text;
|
|||
|
|
using NHibernate.Linq;
|
|||
|
|
using Spring.Data.NHibernate.Generic.Support;
|
|||
|
|
|
|||
|
|
namespace Dao
|
|||
|
|
{
|
|||
|
|
public abstract class RepositoryBase<T> : HibernateDaoSupport, IRepository<T> where T : class
|
|||
|
|
{
|
|||
|
|
private static log4net.ILog logger = log4net.LogManager.GetLogger("RepositoryBase");
|
|||
|
|
public virtual T Get(object id)
|
|||
|
|
{
|
|||
|
|
return this.HibernateTemplate.Get<T>(id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual T Load(object id)
|
|||
|
|
{
|
|||
|
|
return this.HibernateTemplate.Load<T>(id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual IQueryable<T> LoadAll()
|
|||
|
|
{
|
|||
|
|
return Session.Query<T>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual IQueryable<T> LoadAllWithPage(out long count, int pageIndex, int pageSize)
|
|||
|
|
{
|
|||
|
|
var result = Session.Query<T>();
|
|||
|
|
count = result.LongCount();
|
|||
|
|
return result.Skip((pageIndex - 1) * pageSize).Take(pageSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual IQueryable<T> LoadAllFromCache()
|
|||
|
|
{
|
|||
|
|
return Session.Query<T>().Cacheable<T>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual NHibernate.IQueryOver<T> QueryOver()
|
|||
|
|
{
|
|||
|
|
return Session.QueryOver<T>();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual object Save(T entity)
|
|||
|
|
{
|
|||
|
|
object obj = null;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
obj= this.HibernateTemplate.Save(entity);
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
return obj;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual void Update(T entity)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
this.HibernateTemplate.Update(entity);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual void Update(IList<T> entities)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
foreach (var entity in entities)
|
|||
|
|
{
|
|||
|
|
this.HibernateTemplate.Update(entity);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 通过sql自定义语句更新数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="sql"></param>
|
|||
|
|
public virtual void Update(string sql)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
NHibernate.IQuery query = Session.CreateSQLQuery(sql);
|
|||
|
|
query.ExecuteUpdate();
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
//logger.Error("update error Type: " + sql + ": " + ex.Message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual void SaveOrUpdate(T entity)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
this.HibernateTemplate.SaveOrUpdate(entity);
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
//Type t = entity.GetType();
|
|||
|
|
//logger.Error("SaveOrUpdate error Type: " + t.Name + ": " + ex.Message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual void Delete(object id)
|
|||
|
|
{
|
|||
|
|
var entity = this.HibernateTemplate.Get<T>(id);
|
|||
|
|
if (entity == null)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
this.HibernateTemplate.Delete(entity);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public virtual void Delete(IList<object> idList)
|
|||
|
|
{
|
|||
|
|
foreach (var item in idList)
|
|||
|
|
{
|
|||
|
|
var entity = this.HibernateTemplate.Get<T>(item);
|
|||
|
|
if (entity == null)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
this.HibernateTemplate.Delete(entity);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|