El usuario tiene roles para los sistemas: ¿cómo (objeto) modelar la relación ternaria?

Tengo las siguientes Entidades:

Privilege ( Id, Name )
Role ( Id, Name, ICollection<Privilege> )
System ( Id, Name )

User ( Id, Name, Pass, ? )

Ahora quiero modelar "Un usuario puede tener, para cada uno de cero o más sistemas, cero o más roles", por ejemplo:

IDictionary<System, ICollection<Role>> SystemRoles { get; set; }

¿Es esto posible con ASP.NET EntityFramework? Si es así, ¿cómo? ¿Qué atributos tengo que configurar?

He estado buscando por aquí durante bastante tiempo, sin embargo, no encuentro nada útil en la red para la "primera relación ternaria del código marco de la entidad"

¿Puedes señalarme algún enlace bonito donde esto se cubre en detalle? O tal vez, dame una pista sobre cómo modelarlo / qué atributos puedo poner en el diccionario.

Pregunta adicional: Si la solución IDictionary funciona de alguna manera, ¿hay algún cambio para obtener un cambio en el rendimiento del proxy? IDictionary no es un ICollection ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta