Entity Framework - Свойство только для чтения, сопоставленное столбцу связанной таблицы

У меня есть интересная проблема, которую нужно решить, но, как правило, она выглядит такЭто не легко достижимо с Entity Framework. Есть две таблицы:

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

Игрок может принадлежать только одной команде. Используя TPT (сначала DB), у нас есть два класса, сопоставленных с этими таблицами:

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 Players{get;}
}

Чего я хотел бы добиться, так это свойства IsProfessional объекта 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
    }

Можно ли настроить отображение таким образом, чтобы свойство IsProfessional можно было использовать в запросах linq?

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

и заполнять это поле каждый раз, когда сущность Игрока материализуется?

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

Уже пробовал с:

Разделение сущностей, Невозможно, потому что я хочу сохранить командную карту и потому что отношения не 1: 1)Сопоставление сущности Player с представлением базы данных, Didn»Мне это нравится, потому что есть другие отношения, которые есть у игрока. Я знаю, что можно создать их вручную, но обновление EDMX из базы данных сбросит SSDL.

Спасибо

Решение

Основываясь на втором варианте ответа Герт Арнольда, решение, которое соответствует моим потребностям, выглядит следующим образом:

Я создаю функциюGetIsProfessional (пришлось сделать это, потому что вычисляемые поля обычно могут быть сделаны только из собственных полей таблицы)

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

Я создал вычисляемое поле наPlayer Таблица

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

Насколько я'Я использую DB первый подход, я просто обновляю модель из базы данных, и это 'если я могу запросить это поле,предварительно заполняется, когда объект Player материализован.

Ответы на вопрос(3)

Ваш ответ на вопрос