Код Entity Framework: отношение «один к одному»

У меня есть две следующие модели

public class Account
{
     public int Id { get; set; }
     public string Name { get; set; }
     public int CurrentPeriodId { get; set; }

     [ForeignKey("CurrentPeriodId")]
     public virtual Period CurrentPeriod { get; set; }

     public virtual ICollection<Period> Periods { get; set; }
}

public class Period
{
     public int Id { get; set; }
     public int AccountId { get; set; }
     public DateTime StartDate { get; set; }
     public DateTime EndDate { get; set; }

     public virtual Account Account { get; set; }
}

И я пытаюсь выполнить следующий запрос:

from p in context.Periods
where p.AccountId == accountId &&
      p.Id == p.Account.CurrentPeriodId
select p.StartDate

И я получаю исключение sql, говорящее« Недопустимое имя столбца Account_AccountId ».

Я знаю, что могу подойти к этому со стороны учетной записи и сделать что-то вроде

from a in context.Accounts
where a.Id == id
select a.CurrentPeriod.StartDate

Но я хотел бы знать, как настроить взаимосвязь, чтобы заставить другой запрос работать. Что мне не хватает?

9
задан Nick Olsen 7 October 2011 в 04:57
поделиться