/// <summary> /// Get an Entity in the specified Version from DataTimeline using XmlImport /// </summary> /// <param name="entityId">EntityId</param> /// <param name="changeId">ChangeId to retrieve</param> /// <param name="defaultCultureDimension">Default Language</param> public Import.ImportEntity GetEntityVersion(int entityId, int changeId, int? defaultCultureDimension) { // Get Timeline Item string timelineItem; try { timelineItem = Context.SqlDb.DataTimeline.Where(d => d.Operation == Constants.DataTimelineEntityStateOperation && d.SourceID == entityId && d.SysLogID == changeId).Select(d => d.NewData).SingleOrDefault(); } catch (InvalidOperationException ex) { throw new InvalidOperationException(string.Format("Error getting EntityId {0} with ChangeId {1} from DataTimeline. {2}", entityId, changeId, ex.Message)); } if (timelineItem == null) throw new InvalidOperationException(string.Format("EntityId {0} with ChangeId {1} not found in DataTimeline.", entityId, changeId)); // Parse XML var xEntity = XElement.Parse(timelineItem); var assignmentObjectTypeName = xEntity.Attribute("AssignmentObjectType").Value; var assignmentObjectTypeId = new DbShortcuts(Context).GetAssignmentObjectType(assignmentObjectTypeName).AssignmentObjectTypeID; // Prepare source and target-Languages if (!defaultCultureDimension.HasValue) throw new NotSupportedException("GetEntityVersion without defaultCultureDimension is not yet supported."); var defaultLanguage = Context.Dimensions.GetDimension(defaultCultureDimension.Value).ExternalKey; var targetDimensions = Context.Dimensions.GetLanguages(); var allSourceDimensionIds = ((IEnumerable<object>)xEntity.XPathEvaluate("/Value/Dimension/@DimensionID")).Select(d => int.Parse(((XAttribute)d).Value)).ToArray(); var allSourceDimensionIdsDistinct = allSourceDimensionIds.Distinct().ToArray(); var sourceDimensions = Context.Dimensions.GetDimensions(allSourceDimensionIdsDistinct).ToList(); int sourceDefaultDimensionId; if (allSourceDimensionIdsDistinct.Contains(defaultCultureDimension.Value)) // if default culture exists in the Entity, sourceDefaultDimensionId is still the same sourceDefaultDimensionId = defaultCultureDimension.Value; else { var sourceDimensionsIdsGrouped = (from n in allSourceDimensionIds group n by n into g select new { DimensionId = g.Key, Qty = g.Count() }).ToArray(); sourceDefaultDimensionId = sourceDimensionsIdsGrouped.Any() ? sourceDimensionsIdsGrouped.OrderByDescending(g => g.Qty).First().DimensionId : defaultCultureDimension.Value; } // Load Entity from Xml unsing XmlImport return XmlImport.GetImportEntity(xEntity, assignmentObjectTypeId, targetDimensions, sourceDimensions, sourceDefaultDimensionId, defaultLanguage); }
public void AddRemoveApp() { var db = EavContext.Instance(); var DbS = new DbShortcuts(db); // Add new App var app = DbS.AddApp("Test Clean Remove"); db.AppId = app.AppID; // Add new AttributeSet var attributeSet = db.AttSetCommands.AddAttributeSet("Sample Attribute Set", "Sample Attribute Set Description", null, ""); db.AttrCommands.AppendAttribute(attributeSet, "Attribute1", "String", true); var attribute2 = db.AttrCommands.AppendAttribute(attributeSet, "Attribute2", "String"); var attribute3 = db.AttrCommands.AppendAttribute(attributeSet, "Attribute3", "String"); var attribute4 = db.AttrCommands.AppendAttribute(attributeSet, "Attribute4", "Entity"); // Add new Entities var values = new Dictionary<string, ValueToImport> { {"Attribute1", new ValueToImport{ Value = "Sample Value 1"}}, {"Attribute2", new ValueToImport{ Value = "Sample Value 2"}}, {"Attribute3", new ValueToImport{ Value = "Sample Value 3"}}, }; var entity1 = db.EntCommands.AddEntity(attributeSet, values, null, null, dimensionIds: new[] { 2 }); values.Add("Attribute4", new ValueToImport { Value = new[] { entity1.EntityID } }); var entity2 = db.EntCommands.AddEntity(attributeSet, values, null, null, dimensionIds: new[] { 2 }); // Update existing Entity values["Attribute3"].Value = "Sample Value 3 modified"; db.EntCommands.UpdateEntity(entity1.EntityID, values, dimensionIds: new[] { 2 }); // update existing AttributeSets db.AttrCommands.UpdateAttribute(attribute2.AttributeID, "Attribute2Renamed"); db.AttSetCommands.RemoveAttributeInSet(attribute3.AttributeID, attributeSet.AttributeSetID); // Delete the App DbS.DeleteApp(app.AppID); }
public void DimensionsTest() { var Context = new EavContext(); var DbS = new DbShortcuts(Context); var Entity = DbS.GetEntity(277); //Context.UpdateEntity(); }