/// <summary> /// Fills the Db4o info. /// </summary> /// <param name="db4oInfoItem">The db4o info item.</param> /// <param name="container">The container.</param> /// <param name="fillMode">The fill mode.</param> public static void FillDB4OInfo(this IDB4OEntityInfo db4oInfoItem, IObjectContainer container, DB4OFillOptions fillMode) { if (db4oInfoItem == null || db4oInfoItem.HasDB4OEntityInfo() || !container.Ext().IsActive(db4oInfoItem)) { return; } var repositoryInfo = container.Ext().GetObjectInfo(db4oInfoItem); if (fillMode.Equals(DB4OFillOptions.FillGlobalID)) { db4oInfoItem.DB4OGlobalID = repositoryInfo.GetUUID().ConvertToString(); } if (fillMode.Equals(DB4OFillOptions.FillLocalID)) { db4oInfoItem.DB4OLocalID = repositoryInfo.GetInternalID(); } if (fillMode.Equals(DB4OFillOptions.FillVersion)) { db4oInfoItem.DB4OVersion = repositoryInfo.GetVersion(); } var entityType = db4oInfoItem.GetType(); var properties = entityType.GetProperties(); foreach (var property in properties) { var repositoryType = property.PropertyType.GetInterface(typeof(IDB4OEntityInfo).ToString()); if (repositoryType == null) { continue; } var val = property.GetValue(db4oInfoItem, null); if (val == null || !container.Ext().IsActive(val)) { continue; } var repositoryVal = val as IDB4OEntityInfo; repositoryVal.FillDB4OInfo(container); } }
/// <summary> /// Fills the Db4O info. /// </summary> /// <param name="enumerable">The enumerable.</param> /// <param name="container">The container.</param> /// <param name="fillOptions">The fill options.</param> public static void FillDB4OInfo(this IEnumerable <IDB4OEntityInfo> enumerable, IObjectContainer container, DB4OFillOptions fillOptions) { if (enumerable == null || enumerable.Count() == 0) { return; } foreach (var item in enumerable) { item.FillDB4OInfo(container, fillOptions); } return; }