public virtual string GetObjectKey(object obj) { string key = ""; IClassMap classMap = m_ObjectManager.Context.DomainMap.MustGetClassMap(obj.GetType()); string sep = classMap.KeySeparator; if (sep == "") { sep = " "; } object value; foreach (IPropertyMap propertyMap in classMap.GetKeyPropertyMaps()) { value = m_ObjectManager.GetPropertyValue(obj, propertyMap.Name); if (value == null || m_ObjectManager.GetNullValueStatus(obj, propertyMap.Name)) { return(""); } if (!(propertyMap.ReferenceType == ReferenceType.None)) { value = m_ObjectManager.GetObjectKey(value); if (((string)value).Length < 1) { return(""); } } key += Convert.ToString(value) + sep; } if (key.Length > sep.Length) { key = key.Substring(0, key.Length - sep.Length); } return(key); }