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


C# IEntityPersister.GetNaturalIdentifierSnapshot方法代码示例

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


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

示例1: GetNaturalIdSnapshot

		/// <summary> 
		/// Get the values of the natural id fields as known to the underlying 
		/// database, or null if the entity has no natural id or there is no 
		/// corresponding row.
		/// </summary>
		public object[] GetNaturalIdSnapshot(object id, IEntityPersister persister)
		{
			if (!persister.HasNaturalIdentifier)
			{
				return null;
			}

			// if the natural-id is marked as non-mutable, it is not retrieved during a
			// normal database-snapshot operation...
			int[] props = persister.NaturalIdentifierProperties;
			bool[] updateable = persister.PropertyUpdateability;
			bool allNatualIdPropsAreUpdateable = true;
			for (int i = 0; i < props.Length; i++)
			{
				if (!updateable[props[i]])
				{
					allNatualIdPropsAreUpdateable = false;
					break;
				}
			}

			if (allNatualIdPropsAreUpdateable)
			{
				// do this when all the properties are updateable since there is
				// a certain likelihood that the information will already be
				// snapshot-cached.
				object[] entitySnapshot = GetDatabaseSnapshot(id, persister);
				if (entitySnapshot == NoRow)
				{
					return null;
				}
				object[] naturalIdSnapshot = new object[props.Length];
				for (int i = 0; i < props.Length; i++)
				{
					naturalIdSnapshot[i] = entitySnapshot[props[i]];
				}
				return naturalIdSnapshot;
			}
			else
			{
				return persister.GetNaturalIdentifierSnapshot(id, session);
			}
		}
开发者ID:hazzik,项目名称:nh-contrib-everything,代码行数:48,代码来源:StatefulPersistenceContext.cs


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