本文整理汇总了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);
}
}