/// <summary> /// /// </summary> /// <param name="searchExpression"></param> /// <param name="searchOrders"></param> /// <param name="parentItem"></param> public override System.Collections.IEnumerable GetData(ISearchExpression searchExpression, IList <ISearchOrder> searchOrders, object parentItem) { IList <T> list; object masterItem = parentItem; if (masterItem != null) { if (masterItem.GetType() == typeof(T)) { list = new List <T>(); list.Add((T)masterItem); } else { using (var rep = new Repository(this.RepositoryCfgName)) { rep.BeginTransaction(); object id = EntityScript.GetPropertyValue(masterItem, TypedEntityMetadata.GenerateEntityInfo(rep.Session.SessionFactory, masterItem.GetType()).IdName); NHibernate.ICriteria criteria = rep.Session.CreateCriteria(typeof(T)) .Add(NHibernate.Criterion.Expression.IdEq(id)); OnCriteriaCreated(criteria); list = criteria.List <T>(); rep.CommitTransaction(); } } } else { list = new List <T>(); } return(list); }
public override System.Collections.IList GetPropertyValueList(string propertyName, FrameWork.DataBusinessModel.DataModel.Persistent persistent) { if (propertyName == "TipoContribuyente") { NHibernate.ICriteria crit = DBConnection.Session.CreateCriteria(typeof(TiposContribuyentes)); NHibernate.Expression.EqExpression cod01 = new NHibernate.Expression.EqExpression("Codigo", "01"); NHibernate.Expression.EqExpression cod06 = new NHibernate.Expression.EqExpression("Codigo", "06"); crit.Add(new NHibernate.Expression.OrExpression(cod01, cod06)); return(crit.List()); } return(base.GetPropertyValueList(propertyName, persistent)); }
private void GetTransporters() { var session = DataConnector.NHibernateConnector.OpenSession(); NHibernate.ICriteria criteria = session.CreateCriteria(typeof(Models.Logistics.Planning)); criteria.SetProjection( Projections.Distinct(Projections.ProjectionList() .Add(Projections.Alias(Projections.Property("Transporter"), "Transporter")) )); criteria.SetResultTransformer( new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Models.Logistics.Planning))); var res = criteria.List <Models.Logistics.Planning>(); cmbTransporter.DataSource = res; cmbTransporter.DisplayMember = "Transporter"; }
/* * * Added two versions of NHibernateHqlQueryStrongTypeRepository.GetSongsByArtist() - GetSongsByArtist2() and GetSongsByArtist3() * * the idea is: * 1. the original version does 3 trips to DB running 3 queries (at very minimum) due to the dot (.) notation / lazy loading of the graphs * 2. we can select all the Song data in one trip to DB running one query. * * Simple output: * * Loading from the original GetSongsByArtist. * NHibernate: select track0_.TrackId as TrackId2_, track0_.AlbumId as AlbumId2_, track0_.Bytes as Bytes2_, track0_.Composer as Composer2_, track0_.GenreId as GenreId2_, track0_.MediaTypeId as MediaTyp6_2_, track0_.Milliseconds as Millisec7_2_, track0_.Name as Name2_, track0_.UnitPrice as UnitPrice2_ from Track track0_ inner join Album album1_ on track0_.AlbumId=album1_.AlbumId inner join Artist artist2_ on album1_.ArtistId=artist2_.ArtistId where artist2_.Name='Aerosmith' * NHibernate: SELECT album0_.AlbumId as AlbumId1_0_, album0_.Title as Title1_0_, album0_.ArtistId as ArtistId1_0_ FROM Album album0_ WHERE album0_.AlbumId=@p0;@p0 = 5 [Type: Int32 (0)] * NHibernate: SELECT artist0_.ArtistId as ArtistId0_0_, artist0_.Name as Name0_0_ FROM Artist artist0_ WHERE artist0_.ArtistId=@p0;@p0 = 3 [Type: Int32 (0)] * Aerosmith - Big Ones - Walk On Water * Aerosmith - Big Ones - Love In An Elevator * Aerosmith - Big Ones - Rag Doll * Aerosmith - Big Ones - What It Takes * Aerosmith - Big Ones - Dude (Looks Like A Lady) * Aerosmith - Big Ones - Janie's Got A Gun * Aerosmith - Big Ones - Cryin' * Aerosmith - Big Ones - Amazing * Aerosmith - Big Ones - Blind Man * Aerosmith - Big Ones - Deuces Are Wild * Aerosmith - Big Ones - The Other Side * Aerosmith - Big Ones - Crazy * Aerosmith - Big Ones - Eat The Rich * Aerosmith - Big Ones - Angel * Aerosmith - Big Ones - Livin' On The Edge * Loading from the new GetSongsByArtist2. * NHibernate: SELECT album1_.Title as y0_, this_.Name as y1_, artist2_.Name as y2_ FROM Track this_ inner join Album album1_ on this_.AlbumId=album1_.AlbumId inner join Artist artist2_ on album1_.ArtistId=artist2_.ArtistId WHERE artist2_.Name = @p0;@p0 = 'Aerosmith' [Type: String (4000)] * Aerosmith - Big Ones - Walk On Water * Aerosmith - Big Ones - Love In An Elevator * Aerosmith - Big Ones - Rag Doll * Aerosmith - Big Ones - What It Takes * Aerosmith - Big Ones - Dude (Looks Like A Lady) * Aerosmith - Big Ones - Janie's Got A Gun * Aerosmith - Big Ones - Cryin' * Aerosmith - Big Ones - Amazing * Aerosmith - Big Ones - Blind Man * Aerosmith - Big Ones - Deuces Are Wild * Aerosmith - Big Ones - The Other Side * Aerosmith - Big Ones - Crazy * Aerosmith - Big Ones - Eat The Rich * Aerosmith - Big Ones - Angel * Aerosmith - Big Ones - Livin' On The Edge * Loading from the new GetSongsByArtist3. * NHibernate: select album1_.Title as col_0_0_, track0_.Name as col_1_0_, artist2_.Name as col_2_0_ from Track track0_ inner join Album album1_ on track0_.AlbumId=album1_.AlbumId inner join Artist artist2_ on album1_.ArtistId=artist2_.ArtistId where artist2_.Name='Aerosmith' * Aerosmith - Big Ones - Walk On Water * Aerosmith - Big Ones - Love In An Elevator * Aerosmith - Big Ones - Rag Doll * Aerosmith - Big Ones - What It Takes * Aerosmith - Big Ones - Dude (Looks Like A Lady) * Aerosmith - Big Ones - Janie's Got A Gun * Aerosmith - Big Ones - Cryin' * Aerosmith - Big Ones - Amazing * Aerosmith - Big Ones - Blind Man * Aerosmith - Big Ones - Deuces Are Wild * Aerosmith - Big Ones - The Other Side * Aerosmith - Big Ones - Crazy * Aerosmith - Big Ones - Eat The Rich * Aerosmith - Big Ones - Angel * Aerosmith - Big Ones - Livin' On The Edge * Press <Enter> to finish. * */ public IEnumerable <Song> GetSongsByArtist2(string name) { using (var session = NHibernateHelper.OpenSession()) { NHibernate.ICriteria qry = session.CreateCriteria <Track>("track") .CreateAlias("Album", "album") .CreateAlias("album.Artist", "artist") .Add(NHibernate.Criterion.Expression.Eq("artist.Name", name)) .SetProjection(NHibernate.Criterion.Projections.ProjectionList() .Add(NHibernate.Criterion.Projections.Property("album.Title"), "AlbumName") .Add(NHibernate.Criterion.Projections.Property("track.Name"), "SongName") .Add(NHibernate.Criterion.Projections.Property("artist.Name"), "ArtistName") ); qry.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean <Song>()); return(qry.List <Song>()); } }
/// <summary> /// /// </summary> /// <param name="searchExpression"></param> /// <param name="searchOrders"></param> /// <param name="parentItem"></param> /// <returns></returns> public override System.Collections.IEnumerable GetData(ISearchExpression searchExpression, IList <ISearchOrder> searchOrders, object parentItem) { IList <T> list; var child = parentItem as S; if (child != null && child.ParentEntity != null) { if (base.IsReload || NHibernateHelper.IsProxy(child.ParentEntity)) { //NHibernateHelper.Initialize(child.ParentEntity, child, reload); //List<T> list = new List<T>(); //list.Add(child.ParentEntity); using (var rep = new Repository(this.RepositoryCfgName)) { rep.BeginTransaction(); //rep.Session.Lock(child, NHibernate.LockMode.None); NHibernate.ICriteria criteria = rep.Session.CreateCriteria(typeof(T)) .Add(NHibernate.Criterion.Expression.IdEq(EntityScript.GetPropertyValue(child, TypedEntityMetadata.GenerateEntityInfo(rep.Session.SessionFactory, typeof(T)).IdName))); OnCriteriaCreated(criteria); list = criteria.List <T>(); rep.CommitTransaction(); } if (list.Count > 0) { list[0].ChildEntity = child; child.ParentEntity = list[0]; } } else { list = new List <T>(); list.Add(child.ParentEntity); } } else { list = new List <T>(); } return(list); }
public override System.Collections.IList GetPropertyValueList(string propertyName, FrameWork.DataBusinessModel.DataModel.Persistent persistent) { int idEmpresaDefault = GeneralSettings.Instance.IdEmpresaDefault; NHibernate.ICriteria critEmpresa = DBConnection.Session.CreateCriteria(typeof(Empresas)); critEmpresa.Add(new NHibernate.Expression.EqExpression("Id", idEmpresaDefault)); Empresas empresa = (Empresas)critEmpresa.UniqueResult(); if (empresa.TipoContribuyente.Codigo != "01" && empresa.TipoContribuyente.Codigo != "06") { throw new Exception("La empresa " + empresa.RazonSocial + " no tiene asociado un tipo de contribuyente válido." + Environment.NewLine + "Debe ser Responsable Inscripto o Monotributista."); } if (propertyName == "TipoFactura") { NHibernate.ICriteria crit = DBConnection.Session.CreateCriteria(typeof(TiposComprobantes)); crit.Add(new NHibernate.Expression.EqExpression("Tipo", TiposComprobantesList.Factura)); if (empresa.TipoContribuyente.Codigo == "01") //R. Inscripto - a - b - e { EqExpression cod01 = new NHibernate.Expression.EqExpression("Codigo", "01"); EqExpression cod06 = new NHibernate.Expression.EqExpression("Codigo", "06"); EqExpression cod19 = new NHibernate.Expression.EqExpression("Codigo", "19"); OrExpression c01or06 = new OrExpression(cod01, cod06); OrExpression c01or06or19 = new OrExpression(c01or06, cod19); crit.Add(c01or06or19); } else if (empresa.TipoContribuyente.Codigo == "06") //Monotributista -c - e { EqExpression cod11 = new NHibernate.Expression.EqExpression("Codigo", "11"); EqExpression cod19 = new NHibernate.Expression.EqExpression("Codigo", "19"); OrExpression c11or19 = new OrExpression(cod11, cod19); crit.Add(c11or19); } return(crit.List()); } if (propertyName == "TipoNotaDebito") { NHibernate.ICriteria crit = DBConnection.Session.CreateCriteria(typeof(TiposComprobantes)); crit.Add(new NHibernate.Expression.EqExpression("Tipo", TiposComprobantesList.NotaDebito)); if (empresa.TipoContribuyente.Codigo == "01") //R. Inscripto { EqExpression cod02 = new NHibernate.Expression.EqExpression("Codigo", "02"); EqExpression cod07 = new NHibernate.Expression.EqExpression("Codigo", "07"); EqExpression cod20 = new NHibernate.Expression.EqExpression("Codigo", "20"); OrExpression c02or07 = new OrExpression(cod02, cod07); OrExpression c02or07or20 = new OrExpression(c02or07, cod20); crit.Add(c02or07or20); } else if (empresa.TipoContribuyente.Codigo == "06") //Monotributista { EqExpression cod12 = new NHibernate.Expression.EqExpression("Codigo", "12"); EqExpression cod20 = new NHibernate.Expression.EqExpression("Codigo", "20"); OrExpression c12or20 = new OrExpression(cod12, cod20); crit.Add(c12or20); } return(crit.List()); } if (propertyName == "TipoNotaCredito") { NHibernate.ICriteria crit = DBConnection.Session.CreateCriteria(typeof(TiposComprobantes)); crit.Add(new NHibernate.Expression.EqExpression("Tipo", TiposComprobantesList.NotaCredito)); if (empresa.TipoContribuyente.Codigo == "01") //R. Inscripto { EqExpression cod03 = new NHibernate.Expression.EqExpression("Codigo", "03"); EqExpression cod08 = new NHibernate.Expression.EqExpression("Codigo", "08"); EqExpression cod21 = new NHibernate.Expression.EqExpression("Codigo", "21"); OrExpression c03or08 = new OrExpression(cod03, cod08); OrExpression c03or08or21 = new OrExpression(c03or08, cod21); crit.Add(c03or08or21); } else if (empresa.TipoContribuyente.Codigo == "06") //Monotributista { EqExpression cod13 = new NHibernate.Expression.EqExpression("Codigo", "13"); EqExpression cod21 = new NHibernate.Expression.EqExpression("Codigo", "21"); OrExpression c13or21 = new OrExpression(cod13, cod21); crit.Add(c13or21); } return(crit.List()); } return(base.GetPropertyValueList(propertyName, persistent)); }
public System.Collections.IList GetDataSource(TiposComprobantesList tipo) { NHibernate.ICriteria crit = DBConnection.Session.CreateCriteria(PersistentType); crit.Add(new NHibernate.Expression.EqExpression("Tipo", tipo)); return(crit.List()); }
public IList <NomBodyPart> GetAllSizeIn(int[] array) { NHibernate.ICriteria criteria = Session.CreateCriteria(typeof(NomBodyPart)); criteria.Add(Expression.In("Id", array)); return(criteria.List <NomBodyPart>()); }
/* * Для числовых полей доступны следующие условия: * [] - null * [!] - не null * [>] - больше * [<] - меньше * [!=] - не равно * [>=] - больше или равно * [<=] - меньше или равно * [in] - принадлежит множеству * [!in]- не принадлежит множеству */ public IList <T> GetByCriteria(Dictionary <string, object> queryParams, Dictionary <string, object> orderParams = null) { string alias; IList aliases = new List <string>(); NHibernate.ICriteria criteria = Session.CreateCriteria(typeof(T)); foreach (KeyValuePair <string, object> kvp in queryParams) { string kvpKey = kvp.Key; string param = null; if (kvpKey.StartsWith("[")) { param = kvpKey.Substring(0, kvpKey.IndexOf("]") + 1); //Убираем спец. символы if ((param == "[!]") || (param == "[]") || (param == "[!=]") || (param == "[>]") || (param == "[<]") || (param == "[>=]") || (param == "[<=]") || (param == "[in]") || (param == "[!in]")) { kvpKey = kvpKey.Substring(kvpKey.IndexOf("]") + 1); } } if (kvpKey.Contains(".")) { alias = kvpKey.Substring(0, kvpKey.IndexOf(".")); if (!aliases.Contains(alias)) { aliases.Add(alias); criteria.CreateAlias(alias, alias); } } if (param == null) { criteria.Add(Restrictions.Eq(kvpKey, kvp.Value)); } else { if (param == "[]") { criteria.Add(Restrictions.IsNull(kvpKey)); } else if (param == "[!]") { criteria.Add(Restrictions.Not(Restrictions.IsNull(kvpKey))); } else if (param == "[!=]") { criteria.Add(Restrictions.Not(Restrictions.Eq(kvpKey, kvp.Value))); } else if (param == "[>]") { criteria.Add(Restrictions.Gt(kvpKey, kvp.Value)); } else if (param == "[in]") { ICollection collection; String val = (string)kvp.Value; if (val.Contains("'")) { collection = GetStringCollection((string)kvp.Value); } else { collection = GetIntCollection((string)kvp.Value); } criteria.Add(Restrictions.In(kvpKey, collection)); } else if (param == "[!in]") { ICollection collection; String val = (string)kvp.Value; if (val.Contains("'")) { collection = GetStringCollection((string)kvp.Value); } else { collection = GetIntCollection((string)kvp.Value); } criteria.Add(Restrictions.Not(Restrictions.In(kvpKey, collection))); } else if (param == "[<]") { criteria.Add(Restrictions.Lt(kvpKey, kvp.Value)); } else if (param == "[>=]") { criteria.Add(Restrictions.Ge(kvpKey, kvp.Value)); } else if (param == "[<=]") { criteria.Add(Restrictions.Le(kvpKey, kvp.Value)); } else { criteria.Add(Restrictions.Eq(kvpKey, kvp.Value)); } } } if (orderParams != null) { foreach (KeyValuePair <string, object> ovp in orderParams) { if (ovp.Key.Contains(".")) { alias = ovp.Key.Substring(0, ovp.Key.IndexOf(".")); if (!aliases.Contains(alias)) { aliases.Add(alias); criteria.CreateAlias(alias, alias); } } criteria.AddOrder(new Order(ovp.Key, (bool)ovp.Value)); } } return(criteria.List <T>()); }