# TryLoad

> Loads a single property, already deseriazed into an object.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.Search](/engine/6000.7/script-reference/unityeditor/search.md)
* **Assembly:** UnityEditor

## TryLoad(PropertyDatabaseRecordKey, Object)

Loads a single property, already deseriazed into an object.

```csharp
public bool TryLoad(in PropertyDatabaseRecordKey recordKey, out object value)
```

### Parameters

**** (\[PropertyDatabaseRecordKey]\(/engine/6000.7/script-reference/unityeditor/search/propertydatabaserecordkey)): A record key.**** (\[Object]\(https\://learn.microsoft.com/dotnet/api/system.object)): The property value.

### Returns

| Type                                                          | Description                                                |
| ------------------------------------------------------------- | ---------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the record is found and is valid, false otherwise. |

### Remarks

```csharp
// Load the value already deserialized.
var colorRecordKey = PropertyDatabase.CreateRecordKey("path/to/my/asset", "m_Color");
if (!propertyDatabase.TryLoad(colorRecordKey, out object colorObject))
    Assert.Fail("Failed to load color property.");
var color = (Color)colorObject;
Assert.AreEqual(new Color(1, 0, 1), color);
```

Additional Resources: [PropertyDatabase.CreateRecordKey](/engine/6000.7/script-reference/unityeditor/search/propertydatabase/createrecordkey.md).

## TryLoad(PropertyDatabaseRecordKey, IPropertyDatabaseRecordValue)

Loads a single property, still contained within a record.

```csharp
public bool TryLoad(in PropertyDatabaseRecordKey recordKey, out IPropertyDatabaseRecordValue value)
```

### Parameters

**** (\[PropertyDatabaseRecordKey]\(/engine/6000.7/script-reference/unityeditor/search/propertydatabaserecordkey)): A record key.**** (\[IPropertyDatabaseRecordValue]\(/engine/6000.7/script-reference/unityeditor/search/ipropertydatabaserecordvalue)): The property record.

### Returns

| Type                                                          | Description                                                |
| ------------------------------------------------------------- | ---------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the record is found and is valid, false otherwise. |

### Remarks

This method doesn't deserialize the value. You have to deserialize it yourself by calling PropertyDatabase.GetObjectFromRecordValue.

```csharp
// Load the record value to do a deserialization at the appropriate time.
var sizeRecordKey = PropertyDatabase.CreateRecordKey("path/to/my/asset", "m_Size");
if (!propertyDatabase.TryLoad(sizeRecordKey, out IPropertyDatabaseRecordValue sizeRecordValue))
    Assert.Fail("Failed to load size property.");
var size = propertyDatabase.GetValueFromRecord<int>(sizeRecordValue);
Assert.AreEqual(42, size);
```

Additional Resources: [PropertyDatabase.CreateRecordKey](/engine/6000.7/script-reference/unityeditor/search/propertydatabase/createrecordkey.md).

## TryLoad(ulong, IEnumerable\<Object>)

Loads all the properties of a document, already deseriazed into objects.

```csharp
public bool TryLoad(ulong documentKey, out IEnumerable<object> data)
```

### Parameters

**** (\[ulong]\(https\://learn.microsoft.com/dotnet/api/system.uint64)): A document key.**** (\[IEnumerable\<Object>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)): The document property values.

### Returns

| Type                                                          | Description                                                |
| ------------------------------------------------------------- | ---------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the record is found and is valid, false otherwise. |

### Remarks

```csharp
// Load all values not associated with a document, already deserialized.
var nullDocumentKey = PropertyDatabase.CreateDocumentKey(null);
if (!propertyDatabase.TryLoad(nullDocumentKey, out IEnumerable<object> noDocumentProperties))
    Assert.Fail("Failed to load properties with no documents.");
Assert.IsNotEmpty(noDocumentProperties);
Assert.AreEqual("myDocs_", noDocumentProperties.First());
```

Additional Resources: [PropertyDatabase.CreateDocumentKey](/engine/6000.7/script-reference/unityeditor/search/propertydatabase/createdocumentkey.md).

## TryLoad(ulong, IEnumerable\<IPropertyDatabaseRecord>)

Loads all the properties of a document, still contained within records.

```csharp
public bool TryLoad(ulong documentKey, out IEnumerable<IPropertyDatabaseRecord> records)
```

### Parameters

**** (\[ulong]\(https\://learn.microsoft.com/dotnet/api/system.uint64)): A document key.**** (\[IEnumerable\<IPropertyDatabaseRecord>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)): The document property records.

### Returns

| Type                                                          | Description                                                |
| ------------------------------------------------------------- | ---------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the record is found and is valid, false otherwise. |

### Remarks

This method doesn't deserialize the values. You have to deserialize them yourself by calling PropertyDatabase.GetObjectFromRecordValue.

```csharp
// Load all values associated with a document, not deserialized.
var myAssetDocumentKey = PropertyDatabase.CreateDocumentKey("path/to/my/asset");
if (!propertyDatabase.TryLoad(myAssetDocumentKey, out IEnumerable<IPropertyDatabaseRecord> myDocumentRecords))
    Assert.Fail("Failed to load records for my asset document.");
var deserializedValues = new Dictionary<PropertyDatabaseRecordKey, object>();
foreach (var myDocumentRecord in myDocumentRecords)
{
    var value = propertyDatabase.GetValueFromRecord<object>(myDocumentRecord.value);
    deserializedValues.Add(myDocumentRecord.key, value);
}
Assert.AreEqual(5, deserializedValues.Count);
```

Additional Resources: [PropertyDatabase.CreateDocumentKey](/engine/6000.7/script-reference/unityeditor/search/propertydatabase/createdocumentkey.md).
