本文整理汇总了C#中sones.GraphDB.TypeManagement.GraphDBType.RemoveAttribute方法的典型用法代码示例。如果您正苦于以下问题:C# GraphDBType.RemoveAttribute方法的具体用法?C# GraphDBType.RemoveAttribute怎么用?C# GraphDBType.RemoveAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sones.GraphDB.TypeManagement.GraphDBType
的用法示例。
在下文中一共展示了GraphDBType.RemoveAttribute方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RemoveAttributeOfType
/// <summary>
/// Removes an attribute of the given type.
/// </summary>
/// <param name="aUserType">The target type.</param>
/// <param name="attributeUUID">The attribute uuid, referencing the deprecated attribute.</param>
/// <returns></returns>
private Exceptional<ResultType> RemoveAttributeOfType(GraphDBType aUserType, AttributeUUID attributeUUID)
{
#region INPUT EXCEPTIONS
if (aUserType == null)
{
return new Exceptional<ResultType>(new Error_ArgumentNullOrEmpty("aUserType"));
}
#endregion
#region remove attribute from type
TypeAttribute typeAttribute = aUserType.Attributes[attributeUUID];
if (typeAttribute != null)
{
aUserType.RemoveAttribute(typeAttribute.UUID);
var FlushExcept = FlushType(aUserType);
if (FlushExcept.Failed())
{
aUserType.AddAttribute(typeAttribute, this, false);
return new Exceptional<ResultType>(FlushExcept);
}
#region update lookup tables ob sub-classes
foreach (var aSubType in GetAllSubtypes(aUserType).Where(aType => aType != aUserType))
{
//delete from lookuptable
aSubType.RemoveAttributeFromLookupTable(typeAttribute.UUID);
}
#endregion
}
else
{
return new Exceptional<ResultType>(new Error_AttributeIsNotDefined(aUserType.Name, typeAttribute.Name));
}
#endregion
return new Exceptional<ResultType>(ResultType.Successful);
}
示例2: Execute
public override Exceptional Execute(DBContext dbContext, GraphDBType graphDBType)
{
var listOfTypeAttrs = new List<TypeAttribute>();
var retExcept = new Exceptional();
foreach (var attr in _ListOfAttributes)
{
var typeAttr = graphDBType.GetTypeAttributeByName(attr);
if (typeAttr == null)
{
return new Exceptional(new Error_AttributeIsNotDefined(attr));
}
var attrType = dbContext.DBTypeManager.GetTypeByUUID(typeAttr.DBTypeUUID);
if (attrType == null)
return new Exceptional(new Error_TypeDoesNotExist(""));
if (attrType.IsUserDefined)
return new Exceptional(new Error_InvalidReferenceAssignmentOfUndefAttr());
listOfTypeAttrs.Add(typeAttr);
}
var dbobjects = dbContext.DBObjectCache.SelectDBObjectsForLevelKey(new LevelKey(graphDBType, dbContext.DBTypeManager), dbContext);
foreach (var item in dbobjects)
{
if (!item.Success())
{
retExcept.PushIExceptional(item);
}
else
{
foreach (var attr in listOfTypeAttrs)
{
if (item.Value.HasAttribute(attr.UUID, graphDBType))
{
var attrVal = item.Value.GetAttribute(attr.UUID);
var addExcept = item.Value.AddUndefinedAttribute(attr.Name, attrVal, dbContext.DBObjectManager);
if (!addExcept.Success())
retExcept.PushIExceptional(addExcept);
item.Value.RemoveAttribute(attr.UUID);
var saveExcept = dbContext.DBObjectManager.FlushDBObject(item.Value);
if (!saveExcept.Success())
retExcept.PushIExceptional(saveExcept);
}
}
}
}
var indices = graphDBType.GetAllAttributeIndices();
List<AAttributeIndex> idxToDelete = new List<AAttributeIndex>();
//remove attributes from type
foreach (var attr in listOfTypeAttrs)
{
foreach (var item in indices)
{
var index = item.IndexKeyDefinition.IndexKeyAttributeUUIDs.Find(idx => idx == attr.UUID);
if (index != null && item.IndexKeyDefinition.IndexKeyAttributeUUIDs.Count == 1)
{
idxToDelete.Add(item);
}
}
//remove indices
foreach (var idx in idxToDelete)
{
var remExcept = graphDBType.RemoveIndex(idx.IndexName, idx.IndexEdition, dbContext.DBTypeManager);
if (!remExcept.Success())
{
retExcept.PushIExceptional(remExcept);
}
}
idxToDelete.Clear();
graphDBType.RemoveAttribute(attr.UUID);
var flushExcept = dbContext.DBTypeManager.FlushType(graphDBType);
if (!flushExcept.Success())
{
retExcept.PushIExceptional(flushExcept);
}
}
//.........这里部分代码省略.........