#### [DiGi\.Core\.Relation](DiGi.Core.Relation.Overview.md 'DiGi\.Core\.Relation\.Overview')
## DiGi\.Core\.Relation\.Interfaces Namespace
### Interfaces
## IBidirectionalRelation Interface
Defines the contract for a bidirectional relation between unique objects\.
```csharp
public interface IBidirectionalRelation : DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
```
Derived
↳ [OneToManyBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyBidirectionalRelation\')
↳ [OneToOneBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneBidirectionalRelation\')
↳ [IBidirectionalRelation<X,Y>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IBidirectionalRelation_X,Y_ 'DiGi\.Core\.Relation\.Interfaces\.IBidirectionalRelation\')
Implements [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')
## IBidirectionalRelation\ Interface
Defines the contract for a bidirectional relation between two types of unique objects\.
```csharp
public interface IBidirectionalRelation : DiGi.Core.Relation.Interfaces.IBidirectionalRelation, DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Core.Relation.Interfaces.IRelation
where X : DiGi.Core.Interfaces.IUniqueObject
where Y : DiGi.Core.Interfaces.IUniqueObject
```
#### Type parameters
`X`
`Y`
Derived
↳ [OneToManyBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyBidirectionalRelation\')
↳ [OneToOneBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneBidirectionalRelation\')
Implements [IBidirectionalRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IBidirectionalRelation 'DiGi\.Core\.Relation\.Interfaces\.IBidirectionalRelation'), [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject'), [DiGi\.Core\.Relation\.Interfaces\.IRelation<](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[X](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IBidirectionalRelation_X,Y_.X 'DiGi\.Core\.Relation\.Interfaces\.IBidirectionalRelation\\.X')[,](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[Y](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IBidirectionalRelation_X,Y_.Y 'DiGi\.Core\.Relation\.Interfaces\.IBidirectionalRelation\\.Y')[>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')
## IDirectionalRelation Interface
Defines the contract for a directional relation between unique objects\.
```csharp
public interface IDirectionalRelation : DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
```
Derived
↳ [OneToManyDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToManyDirectionalRelation\')
↳ [OneToOneDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToOneDirectionalRelation\')
↳ [IDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IDirectionalRelation\')
Implements [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')
## IDirectionalRelation\ Interface
Defines the contract for a directional relation between two types of unique objects\.
```csharp
public interface IDirectionalRelation : DiGi.Core.Relation.Interfaces.IDirectionalRelation, DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Core.Relation.Interfaces.IRelation
where XUniqueObject : DiGi.Core.Interfaces.IUniqueObject
where YUniqueObject : DiGi.Core.Interfaces.IUniqueObject
```
#### Type parameters
`XUniqueObject`
The type of the source unique object\.
`YUniqueObject`
The type of the target unique object\.
Derived
↳ [OneToManyDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToManyDirectionalRelation\')
↳ [OneToOneDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToOneDirectionalRelation\')
Implements [IDirectionalRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IDirectionalRelation 'DiGi\.Core\.Relation\.Interfaces\.IDirectionalRelation'), [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject'), [DiGi\.Core\.Relation\.Interfaces\.IRelation<](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[XUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IDirectionalRelation_XUniqueObject,YUniqueObject_.XUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IDirectionalRelation\\.XUniqueObject')[,](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[YUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IDirectionalRelation_XUniqueObject,YUniqueObject_.YUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IDirectionalRelation\\.YUniqueObject')[>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')
## IManyToManyRelation Interface
Defines the contract for a many\-to\-many relationship between unique objects\.
```csharp
public interface IManyToManyRelation : DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
```
Derived
↳ [ManyToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToManyRelation\')
↳ [IManyToManyRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToManyRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IManyToManyRelation\')
Implements [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')
### Properties
## IManyToManyRelation\.UniqueReferences\_From Property
Gets a list of unique references on the "from" side of the relation\.
```csharp
System.Collections.Generic.List? UniqueReferences_From { get; }
```
#### Property Value
[System\.Collections\.Generic\.List<](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')[>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')
## IManyToManyRelation\.UniqueReferences\_To Property
Gets a list of unique references on the "to" side of the relation\.
```csharp
System.Collections.Generic.List? UniqueReferences_To { get; }
```
#### Property Value
[System\.Collections\.Generic\.List<](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')[>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')
## IManyToManyRelation\ Interface
Defines the contract for a many\-to\-many relationship between two types of unique objects\.
```csharp
public interface IManyToManyRelation : DiGi.Core.Relation.Interfaces.IManyToManyRelation, DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Core.Relation.Interfaces.IRelation
where XUniqueObject : DiGi.Core.Interfaces.IUniqueObject
where YUniqueObject : DiGi.Core.Interfaces.IUniqueObject
```
#### Type parameters
`XUniqueObject`
`YUniqueObject`
Derived
↳ [ManyToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToManyRelation\')
Implements [IManyToManyRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToManyRelation 'DiGi\.Core\.Relation\.Interfaces\.IManyToManyRelation'), [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject'), [DiGi\.Core\.Relation\.Interfaces\.IRelation<](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[XUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToManyRelation_XUniqueObject,YUniqueObject_.XUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IManyToManyRelation\\.XUniqueObject')[,](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[YUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToManyRelation_XUniqueObject,YUniqueObject_.YUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IManyToManyRelation\\.YUniqueObject')[>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')
## IManyToOneRelation Interface
Defines the contract for a many\-to\-one relationship between unique objects\.
```csharp
public interface IManyToOneRelation : DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
```
Derived
↳ [ManyToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToOneRelation\')
↳ [IManyToOneRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToOneRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IManyToOneRelation\')
Implements [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')
### Properties
## IManyToOneRelation\.UniqueReferences\_From Property
Gets a list of unique references on the "from" side of the relation\.
```csharp
System.Collections.Generic.List? UniqueReferences_From { get; }
```
#### Property Value
[System\.Collections\.Generic\.List<](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')[>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')
## IManyToOneRelation\.UniqueReference\_To Property
Gets the unique reference on the "to" side of the relation\.
```csharp
DiGi.Core.Interfaces.IUniqueReference? UniqueReference_To { get; }
```
#### Property Value
[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')
## IManyToOneRelation\ Interface
Defines the contract for a many\-to\-one relationship between two types of unique objects\.
```csharp
public interface IManyToOneRelation : DiGi.Core.Relation.Interfaces.IManyToOneRelation, DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Core.Relation.Interfaces.IRelation
where XUniqueObject : DiGi.Core.Interfaces.IUniqueObject
where YUniqueObject : DiGi.Core.Interfaces.IUniqueObject
```
#### Type parameters
`XUniqueObject`
`YUniqueObject`
Derived
↳ [ManyToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToOneRelation\')
Implements [IManyToOneRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToOneRelation 'DiGi\.Core\.Relation\.Interfaces\.IManyToOneRelation'), [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject'), [DiGi\.Core\.Relation\.Interfaces\.IRelation<](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[XUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToOneRelation_XUniqueObject,YUniqueObject_.XUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IManyToOneRelation\\.XUniqueObject')[,](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[YUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToOneRelation_XUniqueObject,YUniqueObject_.YUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IManyToOneRelation\\.YUniqueObject')[>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')
## IOneToManyRelation Interface
Defines the contract for a one\-to\-many relationship between unique objects\.
```csharp
public interface IOneToManyRelation : DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
```
Derived
↳ [OneToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyRelation\')
↳ [IOneToManyRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToManyRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IOneToManyRelation\')
Implements [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')
### Properties
## IOneToManyRelation\.UniqueReferences\_To Property
Gets a list of unique references on the "to" side of the relation\.
```csharp
System.Collections.Generic.List? UniqueReferences_To { get; }
```
#### Property Value
[System\.Collections\.Generic\.List<](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')[>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')
## IOneToManyRelation\.UniqueReference\_From Property
Gets the unique reference on the "from" side of the relation\.
```csharp
DiGi.Core.Interfaces.IUniqueReference? UniqueReference_From { get; }
```
#### Property Value
[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')
## IOneToManyRelation\ Interface
Defines the contract for a one\-to\-many relationship between two types of unique objects\.
```csharp
public interface IOneToManyRelation : DiGi.Core.Relation.Interfaces.IOneToManyRelation, DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Core.Relation.Interfaces.IRelation
where XUniqueObject : DiGi.Core.Interfaces.IUniqueObject
where YUniqueObject : DiGi.Core.Interfaces.IUniqueObject
```
#### Type parameters
`XUniqueObject`
`YUniqueObject`
Derived
↳ [OneToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyRelation\')
Implements [IOneToManyRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToManyRelation 'DiGi\.Core\.Relation\.Interfaces\.IOneToManyRelation'), [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject'), [DiGi\.Core\.Relation\.Interfaces\.IRelation<](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[XUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToManyRelation_XUniqueObject,YUniqueObject_.XUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IOneToManyRelation\\.XUniqueObject')[,](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[YUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToManyRelation_XUniqueObject,YUniqueObject_.YUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IOneToManyRelation\\.YUniqueObject')[>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')
## IOneToOneRelation Interface
Defines the contract for a one\-to\-one relationship between unique objects\.
```csharp
public interface IOneToOneRelation : DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
```
Derived
↳ [OneToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneRelation\')
↳ [IOneToOneRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToOneRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IOneToOneRelation\')
Implements [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')
### Properties
## IOneToOneRelation\.UniqueReference\_From Property
Gets the unique reference on the "from" side of the relation\.
```csharp
DiGi.Core.Interfaces.IUniqueReference? UniqueReference_From { get; }
```
#### Property Value
[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')
## IOneToOneRelation\.UniqueReference\_To Property
Gets the unique reference on the "to" side of the relation\.
```csharp
DiGi.Core.Interfaces.IUniqueReference? UniqueReference_To { get; }
```
#### Property Value
[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')
## IOneToOneRelation\ Interface
Defines the contract for a one\-to\-one relationship between two types of unique objects\.
```csharp
public interface IOneToOneRelation : DiGi.Core.Relation.Interfaces.IOneToOneRelation, DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject, DiGi.Core.Relation.Interfaces.IRelation
where XUniqueObject : DiGi.Core.Interfaces.IUniqueObject
where YUniqueObject : DiGi.Core.Interfaces.IUniqueObject
```
#### Type parameters
`XUniqueObject`
`YUniqueObject`
Derived
↳ [OneToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneRelation\')
Implements [IOneToOneRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToOneRelation 'DiGi\.Core\.Relation\.Interfaces\.IOneToOneRelation'), [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject'), [DiGi\.Core\.Relation\.Interfaces\.IRelation<](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[XUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToOneRelation_XUniqueObject,YUniqueObject_.XUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IOneToOneRelation\\.XUniqueObject')[,](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')[YUniqueObject](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToOneRelation_XUniqueObject,YUniqueObject_.YUniqueObject 'DiGi\.Core\.Relation\.Interfaces\.IOneToOneRelation\\.YUniqueObject')[>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')
## IRelation Interface
Defines the contract for a relationship between unique objects\.
```csharp
public interface IRelation : DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
```
Derived
↳ [ManyToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToManyRelation\')
↳ [ManyToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToOneRelation\')
↳ [OneToManyBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyBidirectionalRelation\')
↳ [OneToManyDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToManyDirectionalRelation\')
↳ [OneToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyRelation\')
↳ [OneToOneBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneBidirectionalRelation\')
↳ [OneToOneDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToOneDirectionalRelation\')
↳ [OneToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneRelation\')
↳ [Relation](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.Relation 'DiGi\.Core\.Relation\.Classes\.Relation')
↳ [Relation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.Relation_From,To_ 'DiGi\.Core\.Relation\.Classes\.Relation\')
↳ [IBidirectionalRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IBidirectionalRelation 'DiGi\.Core\.Relation\.Interfaces\.IBidirectionalRelation')
↳ [IBidirectionalRelation<X,Y>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IBidirectionalRelation_X,Y_ 'DiGi\.Core\.Relation\.Interfaces\.IBidirectionalRelation\')
↳ [IDirectionalRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IDirectionalRelation 'DiGi\.Core\.Relation\.Interfaces\.IDirectionalRelation')
↳ [IDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IDirectionalRelation\')
↳ [IManyToManyRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToManyRelation 'DiGi\.Core\.Relation\.Interfaces\.IManyToManyRelation')
↳ [IManyToManyRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToManyRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IManyToManyRelation\')
↳ [IManyToOneRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToOneRelation 'DiGi\.Core\.Relation\.Interfaces\.IManyToOneRelation')
↳ [IManyToOneRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToOneRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IManyToOneRelation\')
↳ [IOneToManyRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToManyRelation 'DiGi\.Core\.Relation\.Interfaces\.IOneToManyRelation')
↳ [IOneToManyRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToManyRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IOneToManyRelation\')
↳ [IOneToOneRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToOneRelation 'DiGi\.Core\.Relation\.Interfaces\.IOneToOneRelation')
↳ [IOneToOneRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToOneRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IOneToOneRelation\')
↳ [IRelation<From,To>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation_From,To_ 'DiGi\.Core\.Relation\.Interfaces\.IRelation\')
Implements [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')
### Properties
## IRelation\.UniqueReferences Property
Gets a list containing all unique references in this relation\.
```csharp
System.Collections.Generic.List? UniqueReferences { get; }
```
#### Property Value
[System\.Collections\.Generic\.List<](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')[DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')[>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')
### Methods
## IRelation\.Contains\(RelationSide, IUniqueReference\) Method
Determines whether the relation contains the specified unique reference on the given side\.
```csharp
bool Contains(DiGi.Core.Relation.Enums.RelationSide relationSide, DiGi.Core.Interfaces.IUniqueReference? uniqueReference);
```
#### Parameters
`relationSide` [RelationSide](DiGi.Core.Relation.Enums.md#DiGi.Core.Relation.Enums.RelationSide 'DiGi\.Core\.Relation\.Enums\.RelationSide')
`uniqueReference` [DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')
#### Returns
[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')
## IRelation\.GetType\(RelationSide\) Method
Gets the type of the object on the specified side of the relation\.
```csharp
System.Type? GetType(DiGi.Core.Relation.Enums.RelationSide relationSide);
```
#### Parameters
`relationSide` [RelationSide](DiGi.Core.Relation.Enums.md#DiGi.Core.Relation.Enums.RelationSide 'DiGi\.Core\.Relation\.Enums\.RelationSide')
#### Returns
[System\.Type](https://learn.microsoft.com/en-us/dotnet/api/system.type 'System\.Type')
## IRelation\.Has\(RelationSide\) Method
Determines whether the relation has a reference on the specified side\.
```csharp
bool Has(DiGi.Core.Relation.Enums.RelationSide relationSide);
```
#### Parameters
`relationSide` [RelationSide](DiGi.Core.Relation.Enums.md#DiGi.Core.Relation.Enums.RelationSide 'DiGi\.Core\.Relation\.Enums\.RelationSide')
#### Returns
[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')
## IRelation\.Remove\(RelationSide, IUniqueReference\) Method
Removes a unique reference from the specified side of the relation\.
```csharp
bool Remove(DiGi.Core.Relation.Enums.RelationSide relationSide, DiGi.Core.Interfaces.IUniqueReference? uniqueReference);
```
#### Parameters
`relationSide` [RelationSide](DiGi.Core.Relation.Enums.md#DiGi.Core.Relation.Enums.RelationSide 'DiGi\.Core\.Relation\.Enums\.RelationSide')
`uniqueReference` [DiGi\.Core\.Interfaces\.IUniqueReference](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iuniquereference 'DiGi\.Core\.Interfaces\.IUniqueReference')
#### Returns
[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')
## IRelation\.Remove\\(RelationSide, IEnumerable\\) Method
Removes multiple unique references from the specified side of the relation\.
```csharp
System.Collections.Generic.List? Remove(DiGi.Core.Relation.Enums.RelationSide relationSide, System.Collections.Generic.IEnumerable? uniqueReferences)
where TUniqueReference : DiGi.Core.Interfaces.IUniqueReference;
```
#### Type parameters
`TUniqueReference`
#### Parameters
`relationSide` [RelationSide](DiGi.Core.Relation.Enums.md#DiGi.Core.Relation.Enums.RelationSide 'DiGi\.Core\.Relation\.Enums\.RelationSide')
`uniqueReferences` [System\.Collections\.Generic\.IEnumerable<](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')[TUniqueReference](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation.Remove_TUniqueReference_(DiGi.Core.Relation.Enums.RelationSide,System.Collections.Generic.IEnumerable_TUniqueReference_).TUniqueReference 'DiGi\.Core\.Relation\.Interfaces\.IRelation\.Remove\\(DiGi\.Core\.Relation\.Enums\.RelationSide, System\.Collections\.Generic\.IEnumerable\\)\.TUniqueReference')[>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1 'System\.Collections\.Generic\.IEnumerable\`1')
#### Returns
[System\.Collections\.Generic\.List<](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')[TUniqueReference](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation.Remove_TUniqueReference_(DiGi.Core.Relation.Enums.RelationSide,System.Collections.Generic.IEnumerable_TUniqueReference_).TUniqueReference 'DiGi\.Core\.Relation\.Interfaces\.IRelation\.Remove\\(DiGi\.Core\.Relation\.Enums\.RelationSide, System\.Collections\.Generic\.IEnumerable\\)\.TUniqueReference')[>](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1 'System\.Collections\.Generic\.List\`1')
## IRelation\ Interface
Defines the contract for a relationship between two types of unique objects\.
```csharp
public interface IRelation : DiGi.Core.Relation.Interfaces.IRelation, DiGi.Core.Interfaces.ISerializableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.ICloneableObject, DiGi.Core.Interfaces.IObject
where From : DiGi.Core.Interfaces.IUniqueObject
where To : DiGi.Core.Interfaces.IUniqueObject
```
#### Type parameters
`From`
`To`
Derived
↳ [ManyToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToManyRelation\')
↳ [ManyToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.ManyToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.ManyToOneRelation\')
↳ [OneToManyBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyBidirectionalRelation\')
↳ [OneToManyDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToManyDirectionalRelation\')
↳ [OneToManyRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToManyRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToManyRelation\')
↳ [OneToOneBidirectionalRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneBidirectionalRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneBidirectionalRelation\')
↳ [OneToOneDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Classes\.OneToOneDirectionalRelation\')
↳ [OneToOneRelation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.OneToOneRelation_From,To_ 'DiGi\.Core\.Relation\.Classes\.OneToOneRelation\')
↳ [Relation<From,To>](DiGi.Core.Relation.Classes.md#DiGi.Core.Relation.Classes.Relation_From,To_ 'DiGi\.Core\.Relation\.Classes\.Relation\')
↳ [IBidirectionalRelation<X,Y>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IBidirectionalRelation_X,Y_ 'DiGi\.Core\.Relation\.Interfaces\.IBidirectionalRelation\')
↳ [IDirectionalRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IDirectionalRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IDirectionalRelation\')
↳ [IManyToManyRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToManyRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IManyToManyRelation\')
↳ [IManyToOneRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IManyToOneRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IManyToOneRelation\')
↳ [IOneToManyRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToManyRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IOneToManyRelation\')
↳ [IOneToOneRelation<XUniqueObject,YUniqueObject>](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IOneToOneRelation_XUniqueObject,YUniqueObject_ 'DiGi\.Core\.Relation\.Interfaces\.IOneToOneRelation\')
Implements [IRelation](DiGi.Core.Relation.Interfaces.md#DiGi.Core.Relation.Interfaces.IRelation 'DiGi\.Core\.Relation\.Interfaces\.IRelation'), [DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject'), [DiGi\.Core\.Interfaces\.ICloneableObject<](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1')[DiGi\.Core\.Interfaces\.ISerializableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iserializableobject 'DiGi\.Core\.Interfaces\.ISerializableObject')[>](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject-1 'DiGi\.Core\.Interfaces\.ICloneableObject\`1'), [DiGi\.Core\.Interfaces\.ICloneableObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.icloneableobject 'DiGi\.Core\.Interfaces\.ICloneableObject'), [DiGi\.Core\.Interfaces\.IObject](https://learn.microsoft.com/en-us/dotnet/api/digi.core.interfaces.iobject 'DiGi\.Core\.Interfaces\.IObject')