当前位置: 首页>>代码示例>>C#>>正文


C# ICriteria.GetRootEntityTypeIfAvailable方法代码示例

本文整理汇总了C#中ICriteria.GetRootEntityTypeIfAvailable方法的典型用法代码示例。如果您正苦于以下问题:C# ICriteria.GetRootEntityTypeIfAvailable方法的具体用法?C# ICriteria.GetRootEntityTypeIfAvailable怎么用?C# ICriteria.GetRootEntityTypeIfAvailable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ICriteria的用法示例。


在下文中一共展示了ICriteria.GetRootEntityTypeIfAvailable方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetRootType

        public static Type GetRootType(ICriteria criteria)
        {
            Type rootType = criteria.GetRootEntityTypeIfAvailable();
            if (rootType != null)
            {
                return rootType;
            }

            CriteriaImpl impl = GetRootCriteria(criteria);
            if(impl.Session==null)
                throw new InvalidOperationException("Could not get root type on criteria that is not attached to a session");

            ISessionFactoryImplementor factory = impl.Session.Factory;
            IEntityPersister persister = factory.GetEntityPersister(impl.EntityOrClassName);
            if (persister == null)
                throw new InvalidOperationException("Could not find entity named: " + impl.EntityOrClassName);

            return persister.GetMappedClass(EntityMode.Poco);
        }
开发者ID:JackWangCUMT,项目名称:rhino-tools,代码行数:19,代码来源:CriteriaUtil.cs

示例2: ApplyExpansions

        /// <summary>
        /// Add the Fetch clauses to the query according to the given expand paths, using the ICriteria API
        /// </summary>
        /// <param name="criteria">The query to expand</param>
        /// <param name="expandPaths">The names of the properties to expand.  May include nested paths of the form "Property/SubProperty"</param>
        /// <param name="sessionFactory">Provides the NHibernate metadata for the classes</param>
        /// <param name="expandMap">If provided, will be populated with the names of the expanded properties for each type.</param>
        /// <returns></returns>
        public static ICriteria ApplyExpansions(ICriteria criteria, string[] expandPaths, ISessionFactory sessionFactory, IDictionary<Type, List<string>> expandMap = null)
        {
            if (criteria == null) throw new ArgumentException("Criteria cannot be null");

            if (!expandPaths.Any()) throw new ArgumentException("Expansion Paths cannot be null");

            foreach (string expand in expandPaths)
            {
                // We always start with the resulting element type
                var currentType = criteria.GetRootEntityTypeIfAvailable();
                var dotpath = expand.Replace('/', '.');
                criteria.SetFetchMode(dotpath, FetchMode.Eager);

                // Add the types and properties to the expandMap so they will be serialized
                foreach (string seg in expand.Split('/'))
                {
                    if (expandMap != null && !expandMap.ContainsKey(currentType))
                        expandMap.Add(currentType, new List<string>());

                    IClassMetadata metadata = sessionFactory.GetClassMetadata(currentType);
                    if (metadata == null)
                    {
                        throw new ArgumentException("Type '" + currentType + "' not recognized as a valid type for this Context");
                    }

                    // Gather information about the property
                    var propInfo = currentType.GetProperty(seg);

                    if (propInfo == null)
                    {
                        throw new ArgumentException("Type '" + currentType.Name + "' does not have property '" + seg + "'");
                    }
                    if (expandMap != null) expandMap[currentType].Add(seg);
                    var propType = propInfo.PropertyType;

                    currentType = propType;
                }
            }

            return criteria;
        }
开发者ID:jgarverick,项目名称:Breeze,代码行数:49,代码来源:NHEagerFetch.cs

示例3: ToFuture

        /// <summary>
        /// To the future.
        /// </summary>
        /// <param name="criteria">The criteria.</param>
        /// <returns>IEnumerable.</returns>
        public static IEnumerable ToFuture(ICriteria criteria)
        {
            Type collectionType;
            try
            {
                collectionType = criteria.GetRootEntityTypeIfAvailable() ?? typeof(object);
            }
            catch (Exception)
            {
                collectionType = typeof(object);
            }

            FutureFunction current = Functions.FirstOrDefault(n => n.CollectionType == collectionType);
            if (current == null)
            {
                current = new FutureFunction(collectionType);
                Functions.Add(current);
            }

            return current.ExecuteFuture(criteria);
        }
开发者ID:TheHunter,项目名称:PersistentLayer.NHibernate,代码行数:26,代码来源:FutureQueryResolver.cs

示例4: GetSecurityKeyProperty

 private string GetSecurityKeyProperty(ICriteria criteria)
 {
     Type rootType = criteria.GetRootEntityTypeIfAvailable();
     return criteria.Alias + "." + Security.GetSecurityKeyProperty(rootType);
 }
开发者ID:reharik,项目名称:KnowYourTurf.SystemSupport,代码行数:5,代码来源:AuthorizationService.cs


注:本文中的ICriteria.GetRootEntityTypeIfAvailable方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。