本文整理汇总了C#中sones.GraphDB.TypeManagement.GraphDBType.GetAttributeIndex方法的典型用法代码示例。如果您正苦于以下问题:C# GraphDBType.GetAttributeIndex方法的具体用法?C# GraphDBType.GetAttributeIndex怎么用?C# GraphDBType.GetAttributeIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sones.GraphDB.TypeManagement.GraphDBType
的用法示例。
在下文中一共展示了GraphDBType.GetAttributeIndex方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RebuildIndex
public Exceptional<ResultType> RebuildIndex(String myIndexName, String myIndexEdition, GraphDBType myDBTypeStream, IndexSetStrategy myIndexSetStrategy)
{
var objectLocation = new ObjectLocation(myDBTypeStream.ObjectLocation, DBConstants.DBObjectsLocation);
IEnumerable<String> allDBOLocations = null;
try
{
allDBOLocations = _DBContext.DBObjectManager.GetAllStreamsRecursive(objectLocation, DBConstants.DBOBJECTSTREAM);
}
catch (Exception e)
{
return new Exceptional<ResultType>(new Error_RebuildIndexFailed(myIndexName, myIndexEdition, e.Message));
}
try
{
var index = myDBTypeStream.GetAttributeIndex(myIndexName, myIndexEdition);
index.ClearAndRemoveFromDisc(this);
foreach (var loc in allDBOLocations)
{
var dbo = _DBContext.DBObjectManager.LoadDBObject(new ObjectLocation(myDBTypeStream.ObjectLocation, DBConstants.DBObjectsLocation, _DBContext.DBObjectManager.GetDBObjectStreamShard(myDBTypeStream, new ObjectUUID(loc)), loc));
if (dbo.Failed())
{
return new Exceptional<ResultType>(dbo);
}
if (!dbo.Value.ObjectLocation.Contains(loc))
{
//NLOG: temporarily commented
////_Logger.Error("Could not found the correct DBObject for Location " + loc + " the ObjectUUID is now " + dbo.Value.ObjectUUID.ToString());
}
else
{
if (dbo.Value.HasAtLeastOneAttribute(index.IndexKeyDefinition.IndexKeyAttributeUUIDs, myDBTypeStream, null))
{
var insertResult = index.Insert(dbo.Value, myIndexSetStrategy, myDBTypeStream, _DBContext);
if (!insertResult.Success())
{
return new Exceptional<ResultType>(insertResult);
}
}
}
}
}
catch (GraphDBException pe)
{
var _Exceptional = new Exceptional<ResultType>();
foreach (var _ex in pe.GraphDBErrors)
_Exceptional.PushIError(_ex);
return _Exceptional;
}
catch (GraphFSException_IndexKeyAlreadyExist)
{
//NLOG: temporarily commented
////_Logger.ErrorException("GraphFSException_IndexKeyAlreadyExist", ikae);
return new Exceptional<ResultType>(new Error_UniqueConstrainViolation(myDBTypeStream.Name, myIndexName));
}
catch
{
return new Exceptional<ResultType>(new Error_IndexDoesNotExist(myIndexName, myIndexEdition));
}
return new Exceptional<ResultType>(ResultType.Successful);
}
示例2: GetIndex
/// <summary>
/// Loads an index from a corresponding type.
/// </summary>
/// <param name="myAttribute">The interesting attribute.</param>
/// <param name="dbContext">The TypeManager of the database.</param>
/// <param name="myType">The type of the interesing attribute.</param>
/// <returns></returns>
protected IEnumerable<Tuple<GraphDBType, AAttributeIndex>> GetIndex(TypeAttribute myAttribute, DBContext dbContext, GraphDBType myType, Object myExtraordinary)
{
#region INPUT EXCEPTIONS
if (myType == null || myAttribute == null || dbContext == null)
{
throw new ArgumentNullException();
}
#endregion
if (myExtraordinary == null)
{
#region eventual speedup
//direct match of idx
if (myType.HasAttributeIndices(myAttribute.UUID))
{
yield return new Tuple<GraphDBType, AAttributeIndex>(myType, myType.GetAttributeIndex(dbContext, new IndexKeyDefinition(myAttribute.UUID), null).Value);
}
else
{
//no direct match... lets try the subtypes
foreach (var aSubType in dbContext.DBTypeManager.GetAllSubtypes(myType, true))
{
if (aSubType.HasAttributeIndices(myAttribute.UUID))
{
yield return new Tuple<GraphDBType, AAttributeIndex>(aSubType, aSubType.GetAttributeIndex(dbContext, new IndexKeyDefinition(myAttribute.UUID), null).Value);
}
else
{
yield return new Tuple<GraphDBType, AAttributeIndex>(aSubType, aSubType.GetUUIDIndex(dbContext));
}
}
}
#endregion
}
else
{
var checkResult = myType.HasAttributeIndices(myExtraordinary as IDChainDefinition);
if (checkResult.Failed())
{
throw new GraphDBException(checkResult.IErrors);
}
if (checkResult.Value)
{
yield return new Tuple<GraphDBType, AAttributeIndex>(myType, myType.GetAttributeIndex(dbContext, myExtraordinary as IDChainDefinition).Value);
}
else
{
foreach (var aSubType in dbContext.DBTypeManager.GetAllSubtypes(myType, true))
{
yield return new Tuple<GraphDBType, AAttributeIndex>(aSubType, aSubType.GetUUIDIndex(dbContext));
}
}
}
yield break;
}
示例3: RebuildIndex
public Exceptional<ResultType> RebuildIndex(String myIndexName, String myIndexEdition, GraphDBType myDBTypeStream, IndexSetStrategy myIndexSetStrategy)
{
var objectLocation = new ObjectLocation(myDBTypeStream.ObjectLocation, DBConstants.DBObjectsLocation);
var allDBOLocations = _IGraphFSSession.GetFilteredDirectoryListing(objectLocation, null, null, null, new List<String>(new String[] { DBConstants.DBOBJECTSTREAM }), null, null, null, null, null, null);
if (allDBOLocations.Failed() && allDBOLocations.IErrors.First().GetType() != typeof(GraphFSError_ObjectLocatorNotFound))
return new Exceptional<ResultType>(allDBOLocations);
try
{
var index = myDBTypeStream.GetAttributeIndex(myIndexName, myIndexEdition);
index.ClearAndRemoveFromDisc(this);
if (allDBOLocations.Value != null)
{
foreach (var loc in allDBOLocations.Value)
{
var dbo = _DBContext.DBObjectManager.LoadDBObject(new ObjectLocation(myDBTypeStream.ObjectLocation, DBConstants.DBObjectsLocation, loc));
if (dbo.Failed())
{
return new Exceptional<ResultType>(dbo);
}
if (!dbo.Value.ObjectLocation.Contains(loc))
{
//NLOG: temporarily commented
////_Logger.Error("Could not found the correct DBObject for Location " + loc + " the ObjectUUID is now " + dbo.Value.ObjectUUID.ToString());
}
else
{
if (dbo.Value.HasAtLeastOneAttribute(index.IndexKeyDefinition.IndexKeyAttributeUUIDs, myDBTypeStream, null))
{
var insertResult = index.Insert(dbo.Value, myIndexSetStrategy, myDBTypeStream, _DBContext);
if (!insertResult.Success())
{
return new Exceptional<ResultType>(insertResult);
}
}
}
}
}
}
catch (GraphDBException pe)
{
var _Exceptional = new Exceptional<ResultType>();
foreach (var _ex in pe.GraphDBErrors)
_Exceptional.PushIError(_ex);
return _Exceptional;
}
catch (GraphFSException_IndexKeyAlreadyExist)
{
//NLOG: temporarily commented
////_Logger.ErrorException("GraphFSException_IndexKeyAlreadyExist", ikae);
return new Exceptional<ResultType>(new Error_UniqueConstrainViolation(myDBTypeStream.Name, myIndexName));
}
catch
{
return new Exceptional<ResultType>(new Error_IndexDoesNotExist(myIndexName, myIndexEdition));
}
return new Exceptional<ResultType>(ResultType.Successful);
}