1. using System; using System.Collections; using System.Collections.Generic; using System.Text; using Framework; using Contract.Domain; using Framework.Domain; using System.Xml; using BaseService; using IBasDaoService; namespace BaseService { public interface IBaseService<T> where T : Framework.Domain.Entity, new() { IBasDaoService.IBasDao<T> CurrentDao { get; set; } T FindById(object Id); } public abstract class BaseService<T>:IBaseService<T> where T : Entity,new() { } 3. using Contract.Domain; using Framework.IService; using NHibernate; using NHibernate.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IBasDaoService { public interface IBasDao<T> where T : Framework.Domain.Entity, new() { T FindById(object Id); } public class BasDao<T> : IBasDao<T> where T : Framework.Domain.Entity, new() { private Spring.Context.IApplicationContext _ctx; protected Spring.Context.IApplicationContext ctx { get { if (_ctx == null) _ctx = Spring.Context.Support.ContextRegistry.GetContext(); return _ctx; } } private Framework.IService.ICommonService _dao; public Framework.IService.ICommonService Dao { get { if (_dao == null) { _dao = (Framework.IService.ICommonService)ctx["CommonService"]; } return _dao; } set { _dao = value; } } private static ISession _dbContext; protected static ISession DbContext { get { _dbContext = ((ICommonService)Spring.Context.Support.ContextRegistry.GetContext()["CommonService"]).GetSession(); return _dbContext; } } public virtual T FindById(object Id) { return DbContext.Query<T>().AsEnumerable().Where(x => x.Id == Id.ToString()).FirstOrDefault(); } } public class SysDictTypeDao : BasDao<SysDictType>, IBasDao<SysDictType> { public override SysDictType FindById(object Id) { return (SysDictType)base.FindById(Id); } } } 4. <!--泛型dao的注入--> <object id="CurrentSysDictTypeDao" type="IBasDaoService.SysDictTypeDao, IBasDaoService"> </object> <object id="SysDictTypeService" type="Bll.SysDictTypeService, HRABLL"> <property name="Dao" ref="CommonService"/> <property name="CurrentDao" ref="CurrentSysDictTypeDao"/> </object>
时间: 2024-10-07 05:29:45