Entity Framework: propiedad de solo lectura de la entidad asignada a una columna de la tabla relacionada

Tengo un problema interesante que resolver, pero, aunque es común, parece que no se puede lograr fácilmente con Entity Framework. Hay dos tablas:

Player(Id,TeamId,FirstName,LastName)
Team(Id, Name, IsProfessional)

El jugador solo puede pertenecer a un equipo. Usando TPT (DB primero), tenemos dos clases asignadas a esas tablas:

public class Player
{
   public int Id{get;set;}
   public int TeamId{get;set;}
   public string FirstName{get; set;}
   public string LastName{get; set;}
   public Team Team{get;set;}
}

public class Team
{ 
   public int Id{get; set;}
   public string Name{get;set;}
   public bool IsProfessional{get;set;}
   public IEnumerable<Player> Players{get;}
}

Lo que me gustaría lograr es la propiedad IsProfessional en la entidad Player:

public class Player
    {
       public int Id{get;set;}
       public int TeamId{get;set;}
       public string FirstName{get; set;}
       public string LastName{get; set;}
       public Team Team{get;set;}
       **public bool IsProfessional{get;}** should be read-only
    }

¿Es posible configurar el mapeo de esa manera la propiedad IsProfessional se puede usar en las consultas de linq?

var result= db.Players.Where(p=>p.IsProfessional==true);

y tener ese campo lleno cada vez que se materializa la entidad del jugador?

Player pl = db.Players.Where(p=>p.FirstName="Lionel").FirstOrDefault();
if(pl.IsProfessional)
{
//do something...
}

Ya he probado con:

División de la entidad. No es posible porque quiero mantener la asignación del equipo y porque la relación no es 1: 1)Mapeo de la entidad del jugador a una vista db. No me gustó porque hay otras relaciones que tiene la entidad Player que necesito. Sé que es posible crearlos manualmente, pero la actualización de edmx desde la base de datos restablecerá ssdl.

Gracias

Solución

Según la segunda opción en la respuesta de Gert Arnold, la solución que se adapta a mis necesidades es la siguiente:

Creo la funciónGetIsProfessional (tenía que hacerlo porque los campos computados normalmente solo se pueden hacer desde los propios campos de la tabla)

CREATE FUNCTION [dbo].[GetIsProfessional](@teamId as INT)
RETURNS bit

BEGIN

DECLARE @isProfi AS bit

SELECT @isProfi = IsProfessional
FROM Teams
WHERE Id = @teamId

RETURN @isProfi

END

Creé el campo computado enPlayer mesa

ALTER TABLE Players ADD [IsProfessional] AS dbo.GetIsProfessional(TeamId)

Cuando estoy usando db primer enfoque, solo actualizo el modelo desde la base de datos y ya está, puedo consultar en ese campo y se rellena previamente cuando se materializa el objeto Player.

Respuestas a la pregunta(3)

Su respuesta a la pregunta