/// <summary>
 /// Internal use
 /// </summary>
 public UserProfile ShallowCopy(bool allData = false, bool preserveState = false, bool checkLoadState = false)
 {
     UserProfile e = new UserProfile();
     e.StartAutoUpdating = false;
     e.ID = ID;
     e.PropName = PropName;
     e.LastAccessTime = LastAccessTime;
     if (preserveState)
         e.IsLastAccessTimeModified = IsLastAccessTimeModified;
     else
         e.IsLastAccessTimeModified = false;
     e.LastUpdateTime = LastUpdateTime;
     if (preserveState)
         e.IsLastUpdateTimeModified = IsLastUpdateTimeModified;
     else
         e.IsLastUpdateTimeModified = false;
     e.ValueMimeType = ValueMimeType;
     if (preserveState)
         e.IsValueMimeTypeModified = IsValueMimeTypeModified;
     else
         e.IsValueMimeTypeModified = false;
     e.ApplicationID = ApplicationID;
     e.TypeID = TypeID;
     e.UserID = UserID;
     if (allData)
     {
         if (!checkLoadState || IsBinaryValueLoaded)
             e.BinaryValue = BinaryValue;
         if (preserveState)
             e.IsBinaryValueModified = IsBinaryValueModified;
         else
             e.IsBinaryValueModified = false;
         e.IsBinaryValueLoaded = IsBinaryValueLoaded;
         if (!checkLoadState || IsStringValueLoaded)
             e.StringValue = StringValue;
         if (preserveState)
             e.IsStringValueModified = IsStringValueModified;
         else
             e.IsStringValueModified = false;
         e.IsStringValueLoaded = IsStringValueLoaded;
     }
     e.DistinctString = GetDistinctString(true);
     e.IsPersisted = IsPersisted;
     if (preserveState)
         e.IsEntityChanged = IsEntityChanged;
     else
         e.IsEntityChanged = false;
     e.StartAutoUpdating = true;
     return e;
 }
 /// <summary>
 /// Update changes to the current entity compared to an input <paramref name="newdata" /> and set the entity to a proper state for updating.
 /// </summary>
 /// <param name="newdata">The "new" entity acting as the source of the changes, if any.</param>
 /// <returns>
 /// </returns>
 public void UpdateChanges(UserProfile newdata)
 {
     int cnt = 0;
     bool bBinaryValue = BinaryValue == null && newdata.BinaryValue != null ||
                                                  BinaryValue != null && newdata.BinaryValue == null ||
                                                  BinaryValue != null && newdata.BinaryValue != null && BinaryValue.Length != newdata.BinaryValue.Length;
     if (!bBinaryValue && BinaryValue != null)
     {
         for (int i = 0; i < BinaryValue.Length; i++)
         {
             bBinaryValue = BinaryValue[i] != newdata.BinaryValue[i];
             if (bBinaryValue)
                 break;
         }
     }
     if (bBinaryValue)
     {
         BinaryValue = newdata.BinaryValue;
         IsBinaryValueModified = true;
         cnt++;
     }
     if (LastAccessTime != newdata.LastAccessTime)
     {
         LastAccessTime = newdata.LastAccessTime;
         IsLastAccessTimeModified = true;
         cnt++;
     }
     if (LastUpdateTime != newdata.LastUpdateTime)
     {
         LastUpdateTime = newdata.LastUpdateTime;
         IsLastUpdateTimeModified = true;
         cnt++;
     }
     if (StringValue != newdata.StringValue)
     {
         StringValue = newdata.StringValue;
         IsStringValueModified = true;
         cnt++;
     }
     if (ValueMimeType != newdata.ValueMimeType)
     {
         ValueMimeType = newdata.ValueMimeType;
         IsValueMimeTypeModified = true;
         cnt++;
     }
     IsEntityChanged = cnt > 0;
 }
 /// <summary>
 /// Merge changes inside entity <paramref name="from" /> to the entity <paramref name="to" />. Any changes in <paramref name="from" /> that is not changed in <paramref name="to" /> is updated inside <paramref name="to" />.
 /// </summary>
 /// <param name="from">The "old" entity acting as merging source.</param>
 /// <param name="to">The "new" entity which inherits changes made in <paramref name="from" />.</param>
 /// <returns>
 /// </returns>
 public static void MergeChanges(UserProfile from, UserProfile to)
 {
     if (to.IsPersisted)
     {
         if (from.IsBinaryValueModified && !to.IsBinaryValueModified)
         {
             to.BinaryValue = from.BinaryValue;
             to.IsBinaryValueModified = true;
         }
         if (from.IsLastAccessTimeModified && !to.IsLastAccessTimeModified)
         {
             to.LastAccessTime = from.LastAccessTime;
             to.IsLastAccessTimeModified = true;
         }
         if (from.IsLastUpdateTimeModified && !to.IsLastUpdateTimeModified)
         {
             to.LastUpdateTime = from.LastUpdateTime;
             to.IsLastUpdateTimeModified = true;
         }
         if (from.IsStringValueModified && !to.IsStringValueModified)
         {
             to.StringValue = from.StringValue;
             to.IsStringValueModified = true;
         }
         if (from.IsValueMimeTypeModified && !to.IsValueMimeTypeModified)
         {
             to.ValueMimeType = from.ValueMimeType;
             to.IsValueMimeTypeModified = true;
         }
     }
     else
     {
         to.IsPersisted = from.IsPersisted;
         to.ID = from.ID;
         to.PropName = from.PropName;
         to.BinaryValue = from.BinaryValue;
         to.IsBinaryValueModified = from.IsBinaryValueModified;
         to.LastAccessTime = from.LastAccessTime;
         to.IsLastAccessTimeModified = from.IsLastAccessTimeModified;
         to.LastUpdateTime = from.LastUpdateTime;
         to.IsLastUpdateTimeModified = from.IsLastUpdateTimeModified;
         to.StringValue = from.StringValue;
         to.IsStringValueModified = from.IsStringValueModified;
         to.ValueMimeType = from.ValueMimeType;
         to.IsValueMimeTypeModified = from.IsValueMimeTypeModified;
         to.ApplicationID = from.ApplicationID;
         to.TypeID = from.TypeID;
         to.UserID = from.UserID;
     }
 }
 /// <summary>
 /// Whether or not the present entity is identitical to <paramref name="other" />, in the sense that they have the same (set of) intrinsic identifiers.
 /// </summary>
 /// <param name="other">The entity to be compared to.</param>
 /// <returns>
 ///   The result of comparison.
 /// </returns>
 public bool IsEntityTheSame(UserProfile other)
 {
     if (other == null)
         return false;
     else
         return PropName == other.PropName &&  ApplicationID == other.ApplicationID &&  UserID == other.UserID;
 }              
 /// <summary>
 /// Whether or not the present entity is identitical to <paramref name="other" />, in the sense that they have the same (set of) primary key(s).
 /// </summary>
 /// <param name="other">The entity to be compared to.</param>
 /// <returns>
 ///   The result of comparison.
 /// </returns>
 public bool IsEntityIdentical(UserProfile other)
 {
     if (other == null)
         return false;
     if (ID != other.ID)
         return false;
     return true;
 }              
 /// <summary>
 /// Internal use
 /// </summary>
 public UserProfile ShallowCopy(bool allData = false)
 {
     UserProfile e = new UserProfile();
     e.IsInitializing = true;
     e.ID = ID;
     e.PropName = PropName;
     e.LastAccessTime = LastAccessTime;
     e.LastUpdateTime = LastUpdateTime;
     e.ValueMimeType = ValueMimeType;
     e.ApplicationID = ApplicationID;
     e.TypeID = TypeID;
     e.UserID = UserID;
     if (allData)
     {
         e.BinaryValue = BinaryValue;
         e.StringValue = StringValue;
     }
     e.DistinctString = GetDistinctString(true);
     e.IsPersisted = true;
     e.IsEntityChanged = false;
     e.IsInitializing = false;
     return e;
 }