Skip to content

Allow fields of type EntitySet<T> in a Structure #156

Open
@ondrejtucny

Description

@ondrejtucny

Currently, associations are not supported in structures. Consider the following example showing how this could be useful:

[HierarchyRoot]
public class Config : Entity
{   
    [Field, Key]
    public int Id { get; set; }
}

[HierarchyRoot]
public class Settings : Entity
{    
    [Field, Key]
    public int Id { get; set; }
}

public class Tracker<T> : Structure
{
    [Field, Association]
    public EntitySet<T> History { get; set; }
    [Field, Association]
    public EntitySet<T> Current { get; set; }
    [Field, Association]
    public EntitySet<T> Future { get; set; }
}

[HierarchyRoot]
public class Container : Entity
{
    [Field, Key]
    public int Id { get; set;} 
    [Field]
    public Tracker<Config> Configuration { get; set; }
    [Field]
    public Tracker<Setting> Settings { get; set; }
}

I am tracking the history of certain items within some container entity. These items are linked to the container via a set of associations, which determine whether it's a currently valid, future, or historical item. Further, I can have multiple unrelated types of items history-tracked this way within a single container entity. By using a Structure I am able to design a generic, reusable solution.

Currently, to achieve at least a partial reusability of the pattern, I have to use an interface instead of a Structure descendant, and use an explicit implementation in the container object, so that I am able to support multiple unrelated types of items, like in the example above. This is less convenient and misuses interface implementations where Structure-based composition would be more appropriate

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions