本文整理汇总了C#中ICriteria.SetFetchMode方法的典型用法代码示例。如果您正苦于以下问题:C# ICriteria.SetFetchMode方法的具体用法?C# ICriteria.SetFetchMode怎么用?C# ICriteria.SetFetchMode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICriteria
的用法示例。
在下文中一共展示了ICriteria.SetFetchMode方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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;
}
示例2: OnEvent
public void OnEvent(ICriteria crit)
{
crit.SetFetchMode(associationPath, mode);
}